hibernate入门四之session学习

hibernate的执行流程

session简介

  • 不建议使用jdbc的connection操作数据库,而是通过使用session操作数据库
  • session可以理解为操作数据库的对象
  • session与connection,是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。

transaction简介

  • hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。所以session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。
  • 如果想用hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式(注意:通常不建议这么做)

session详解:

如何获得session

  • openSession
  • getCurrentSession

如果使用第二种方式,需要在hibernate.cfg.xml中配置,如下图

openSession与getCurrentSession的区别:

  • getCurrentSession在事务提交或回滚之后会自动关闭,而openSession需要手动关闭。如果使用openSession没有关闭,多次之后会导致连接池溢出。
  • openSession每次创建新的Session对象,而getCurrentSession使用现有的对象

猜你喜欢

转载自www.cnblogs.com/lindaiyu/p/10995431.html
今日推荐