zoukankan      html  css  js  c++  java
  • hibernate学习笔记之四 Hibernate的增删改查

    采用JUnit测试,继承TestCase

    import java.util.Date;
    
    import junit.framework.TestCase;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class Client extends TestCase{
    
        Configuration config = new Configuration().configure();
        SessionFactory factory = config.buildSessionFactory();
        Session session = factory.openSession();

    一.添加数据

    public void testAdd1(){
            //user对象进入transient状态
            User user = new User();
            user.setName("用户1");
            user.setCreateTime(new Date());
            user.setExpireTime(new Date());
            try{
                //开启事务
                session.beginTransaction();
                //session管理user对象,进入Persistent状态
                session.save(user);
                //提交事务,把内存的改变提交到数据库保存
                session.getTransaction().commit();
            } catch(Exception e){
                e.printStackTrace();
                session.getTransaction().rollback();
            } finally {
                if(session != null && session.isOpen()){
                    //session.关闭,user对象进入detached状态
                    session.close();
                }
            }
        }

    二.查询数据
    使用get查询,没有延迟加载,把需要的一次性都查询出来
    使用load查询,有延迟加载,只把需要显示的查询出来,如果还需要查询其他的数据,再次进行查询(在一定程度上提高性能)
    查询一条数据

    public void testGetOrLoad(){
    //        User user = (User)session.get(User.class, "2c90e481596c44da01596c44dba30001");
        User user = (User)session.load(User.class, "2c90e481596c44da01596c44dba30001");
        System.out.println(user.getName());
    }

    查询表中的所有数据

    public void testQuery(){
            try{
                Query query = session.createQuery("from User");
                //建议使用这种方式读取数据,一次都查询出来
                List<User> userList = query.list();
                for(Iterator<User> iter = (Iterator) userList.iterator(); iter.hasNext(); ){
                    User user = iter.next();
                    System.out.println(user.getName());
                }
                //使用迭代器的方式,每个对象都要查询一次,大量查询时会增加数据库的负担和延迟
    //            Iterator<User> iter = query.iterate();
    //            while(iter.hasNext()){
    //                User user = iter.next();
    //                System.out.println(user.getName());
    //            }
            } catch(Exception e){
                e.printStackTrace();
            } finally{
                
            }
        }

    三.修改数据

    public void testUpdate(){
            //需要先把数据从数据库中查询出来到对象中,修改对象,再update对象
            User user = (User)session.load(User.class, "2c90e481596c44da01596c44dba30001");
            user.setName("修改用户");
            try{
                session.beginTransaction();
                session.update(user);
                session.getTransaction().commit();
            } catch(Exception e){
                e.printStackTrace();
                session.getTransaction().rollback();
            } finally {
                if(session != null && session.isOpen()){
                    session.close();
                }
            }
        }

    四:删除数据

    public void testDelete(){
            //需要先把数据从数据库中查询出来到对象中,再delete对象
            User user = (User)session.load(User.class, "2c90e481596c44da01596c44dba30001");
            try{
                session.beginTransaction();
                session.delete(user);
                session.getTransaction().commit();
            } catch(Exception e){
                e.printStackTrace();
                session.getTransaction().rollback();
            } finally {
                if(session != null && session.isOpen()){
                    session.close();
                }
            }
        }
  • 相关阅读:
    一个陌生女人的来信 Brief einer Unbekannten
    占星术的历史与流变
    占星术基础知识(星座及其标志)
    _________ 公告栏___________
    意识科学初步:David Chalmers的简单问题与困难问题
    意识科学初步:David Chalmers的简单问题与困难问题
    科研笔记(2019年01月29日01:17:57):Python写用于交付的工程项目的基本流程
    中国知网(cnki)上caj格式转pdf的方法
    灰色关联度分析(Grey Relation Analysis,GRA)原理详解
    货币金融学(米什金)笔记:金融体系、货币相关
  • 原文地址:https://www.cnblogs.com/djoker/p/6251273.html
Copyright © 2011-2022 走看看