hibernate获取session的两种方式的区别

hibernate获取session有两种方式,存在着一定的区别

获取session的三个步骤

// 1.创建Configuration,该对象用于读取hibernate.cfg.xml,并完成初始化
    Configuration configuration = new Configuration().configure();


// 2.创建SessionFactory
    SessionFactory sessionFactory = configuration.buildSessionFactory();


// 3.创建Session,相当于jdbc的Connection

    Session session = sessionFactory.getCurrentSession();

或者Session session = sessionFactory.openSession();

 

 

区别如下:

①getCurrentSession()

这种方式获取到的session是与当前线程绑定的,是一个单例,且会自动关闭,如果再手动调用session.close()会报错。使用该单例session进行crud操作时必须开启事务,否则无法提交

   getCurrentSession()内部实际上调用了openSession()

使用该方式还需要进行配置文件,在hibernate.cfg.xml中添加

<property name="current_session_context_class">thread</property>

 

②openSession()

这种方式获取的session需要手动关闭,在进行crud操作时,如果只是进行查询操作则无需开启事务,进行增删改时必须开启事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值