Hibernate详解

Hibernate详解

1、 Configuration管理读取配置文件

  // 1、新建Configuration对象

        Configuration cfg = new Configuration().configure();

             // 读取src下hibernate.properties,不推荐使用

             //Configuration cfg1 = new Configuration();

             // 默认读取是src下的hibernate.cfg.xml

             // 如果hibernate的核心配置文件不叫hibernate.cfg.xml

             // Configuration cfg2 = new Configuration().configure("hb.cfg.xml");

             // 可编程式,不需要配置文件

             // cfg2.addProperties(extraProperties);

             // cfg2.addResource(resourceName);

 

 

 

 

 

 

 

 

 

 

 

 

2、 SessionFactory对象

       // 2、通过Configuration对象创建SessionFactory

       //在hibernate3.x中是这样写

       //SessionFactory sf = cfg.buildSessionFactory();

       // hibernate4.3

       ServiceRegistry sr = new StandardServiceRegistryBuilder()

                                  .applySettings(cfg.getProperties()).build();

       SessionFactory sf = cfg.buildSessionFactory(sr);

 

 

 

 

 

 

 

 

 

3、 Session对象

  •  Hibernate对数据库crud操作,主要使用session。
    • Session可以理解为对Connection对象的一个包装。
    • Session是一个线程不安全的对象,生命周期非常短暂,一般和事务一一对应。
    • 使用完马上关闭就是为了放置线程不安全问题。
    • Session又成为hibernate的一级缓存。

4、 Transaction对象

  •  事务管理对象,通过session来获取该对象。

       // 第一种

       Transaction tx = session.beginTransaction();

       // 第二种

       Transaction getTx = session.getTransaction();

       getTx.begin();

 

 

 

 

 

 

 

  • 事务和异常处理

public class TestException {

   

    public static void main(String[] args) {

       Configuration cfg = null;

       SessionFactory sf = null;

       Session session = null;

       Transaction tx = null;

       try {

           // 1、新建Configuration对象

           cfg = new Configuration().configure();

           // 2、通过Configuration对象创建SessionFactory

           ServiceRegistry sr = new StandardServiceRegistryBuilder()

                                      .applySettings(cfg.getProperties()).build();

           sf = cfg.buildSessionFactory(sr);

           // 3、通过SessionFactory得到Session

           session = sf.openSession();

           // 4、通过Session对象得到Transaction对象

           tx = session.beginTransaction();

           // 5、操作数据

           User u = (User) session.get(User.class, 2);

           System.out.println(u);

           // 6、提交事务

           tx.commit();

       } catch (Exception e) {

           e.printStackTrace();

           // 回滚事务

           tx.rollback();

       } finally {

           // 7、关闭session

           if(session != null && session.isOpen())

               session.close();

       }

    }

}

posted @ 2018-06-29 21:55  莯汐  阅读(104)  评论(0编辑  收藏  举报