Hibernate的Session详解(transaction)

来源:互联网 发布:银行卡网络异地消费 编辑:程序博客网 时间:2024/05/18 12:34

Session是Hibernate用来操作数据库的对象


获得Session对象

1.sessionFactory.openSession();

       openSession每次获得新的session对象,而且事务(transaction.commit())提交之后需要手动关闭,否则容易出现连接池溢出

2.sessionFactory.getCurrentSession();

      getCurrentSession获得的是上一次用过的对象,事务提交或回滚之后会自动关闭


session需要封装到transaction中,进行提交,默认不会自动提交的

设置自动提交:

    session.doWork(new Work(){
               @Override
               public void execute(Connection connection) throws SQLException {    
                   connection.setAutoCommit(true);
               }
            
           });


session对象的get和load方法:

     get(类名.class,序列号);

     load(类名.class,序列号);

1.get方法不管是否使用了返回的对象,都马上向数据库发送SQL语句,返回的是一个持久化对象

   而且如果查询不存在就返回null

2.load方法只有当使用了返回的对象的时候才会发出SQL语句,返回的是一个代理对象

     当查询的数据不存在时,抛出一个ObjectnotFoundException

0 0