码迷,mamicode.com
首页 > Web开发 > 详细

hibernate 总结

时间:2016-04-22 11:53:31      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

  1. 1、加入junit.jar

    2、新建一个工具类HibernateUtils.Java把一些对session的公共操作封装起来

  2. public class HibernateUtils {  
  3. /* 
  4.   *读取Hibernate.cfg.xml文件 
  5. */  
  6.     private static SessionFactory factory;  
  7.       
  8.     static {  
  9.         try {  
  10.             //读取hibernate.cfg.xml文件  
  11.             Configuration cfg = new Configuration().configure();  
  12.               
  13.             //建立SessionFactory  
  14.             factory = cfg.buildSessionFactory();  
  15.         }catch(Exception e) {  
  16.             e.printStackTrace();  
  17.         }  
  18.     }  
  19.     /* 
  20.       *打开Session 
  21.     */  
  22.       
  23.     public static Session getSession() {  
  24.         return factory.openSession();  
  25.     }   
  26.     /* 
  27.       *关闭Session 
  28.     */  
  29.       
  30.     public static void closeSession(Session session) {  
  31.         if (session != null) {  
  32.             if (session.isOpen()) {  
  33.                 session.close();  
  34.             }  
  35.         }  
  36.     }  
  37.       
  38.     public static SessionFactory getSessionFactory() {  
  39.         return factory;  
  40.     }  
  1. public class test extends TestCase {  
  2. /* 
  3.  * 增加User 
  4.  */  
  5.     public void testSave() {  
  6.           
  7.         Session session = null;  
  8.         try {  
  9.             session = HibernateUtils.getSession();  
  10.             session.beginTransaction();  
  11.               
  12.             User user = new User();  
  13.             user.setName("李四");  
  14.             user.setPassword("123");  
  15.             user.setCreateTime(new Date());  
  16.             user.setExpireTime(new Date());  
  17.             session.save(user);  
  18.             session.getTransaction().commit();  
  19.         }catch(Exception e) {  
  20.             e.printStackTrace();  
  21.             session.getTransaction().rollback();  
  22.         }finally {  
  23.             HibernateUtils.closeSession(session);  
  24.         }  
  25.     }  
  26.     /** 
  27.      * 删除 
  28.      */  
  29.     public void testDel(){  
  30.         Session session = null;  
  31.         try {  
  32.             session = HibernateUtils.getSession();  
  33.             session.beginTransaction();  
  34.               
  35.             User user=(User)session.load(User.class, "4028989545a244640145a24466300001");  
  36.               
  37.             session.delete(user);  
  38.             session.getTransaction().commit();  
  39.         }catch(Exception e) {  
  40.             e.printStackTrace();  
  41.             session.getTransaction().rollback();  
  42.         }finally {  
  43.             HibernateUtils.closeSession(session);  
  44.         }  
  45.     }  
  46.       
  47.     /** 
  48.      * 修改 
  49.      */  
  50.     public void testUpdate(){  
  51.         Session session = null;  
  52.         try {  
  53.             session = HibernateUtils.getSession();  
  54.             session.beginTransaction();  
  55.               
  56.             User user=(User)session.load(User.class, "4028989545a243ca0145a243cbf80001");  
  57.             user.setName("王五");  
  58.             session.update(user);  
  59.             session.getTransaction().commit();  
  60.         }catch(Exception e) {  
  61.             e.printStackTrace();  
  62.             session.getTransaction().rollback();  
  63.         }finally {  
  64.             HibernateUtils.closeSession(session);  
  65.         }  
  66.     }  
  67.       
  68.     /** 
  69.      * 查询 
  70.      */  
  71.     public void testLoad(){  
  72.         Session session = null;  
  73.         try {  
  74.             session = HibernateUtils.getSession();  
  75.             session.beginTransaction();  
  76.               
  77.             User user=(User)session.load(User.class, "4028989545a243ca0145a243cbf80001");  
  78.             System.out.println(user.getName());  
  79.             System.out.println(user.getId());  
  80.             System.out.println(user.getPassword());  
  81.             System.out.println(user.getClass());  
  82.             System.out.println(user.getCreateTime());  
  83.             System.out.println(user.getExpireTime());  
  84.             session.getTransaction().commit();  
  85.         }catch(Exception e) {  
  86.             e.printStackTrace();  
  87.             session.getTransaction().rollback();  
  88.         }finally {  
  89.             HibernateUtils.closeSession(session);  
  90.         }  
  91.     }  

 

   
  • load, get区别:

load返回的代理对象, 真正用到对象时才发出sql语句, 

get直接从数据库加载,发出sql语句, 不会延迟.

所以load必须在commit之前执行getName方法的操作.

但是get放在commit之前之后都可以.

@Test
    public void testLoad() {
     
        Session session = sessionFactory.getCurrentSession();
        session.beginTransaction();
        Teacher t = (Teacher)session.load(Teacher.class, 1);  //此数字是ID
         
        System.out.println(t.getName());       
        session.getTransaction().commit();
        //System.out.println(t.getClass());
    }
     
    @Test
    public void testGet() {
     
        Session session = sessionFactory.getCurrentSession();
        session.beginTransaction();
        Teacher t = (Teacher)session.get(Teacher.class, 1);
 
        session.getTransaction().commit();
        //System.out.println(t.getClass());
        System.out.println(t.getName());
    }
 

hibernate 总结

标签:

原文地址:http://www.cnblogs.com/chizizhixin/p/5420679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!