当前位置:首页软件开发Java → Hibernate原理

Hibernate原理

时间:2020-12-10 00:36:29来源:互联网我要评论(0)

昨天对Hibernate进行了简单的介绍,今天来详细了解一下Hibernate
一、Hibernate原理

图中已经明确表名了Hibernate的工作原理:
①通过Configuration获取Hibernate.cfg.xml中的配置
②根据配置生成SessionFactory会话工厂接口
③根据会话工厂开启session会话
④使用session对持久类进行操作的同时需要开启事务transaction
⑤操作结束后需要提交事务并关闭session会话

1.Configuration
在Hibernate4.3中Configuration加载配置文件的设置并放到注册对象中

Configuration config = new Configuration().configure();
ServiceRegistry service = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();


注:不同版本写法不一样

2.SessionFactory
通过config创建会话工厂对象

sessionFactory = config.buildSessionFactory(service);



3.Session
如何获取session对象,有两种方式:
①sessionFactory.openSession()
②sessionFactory.getCurrentSession()
  使用getCurrentSession()方式需要在Hibernate.cfg.xml进行相应的配置
本地事务<property name="hibernate.current_session_context_class">thread</property>
全局事务<property name="hibernate.current_session_context_class">jta</property>

openSession()和getCurrentSession()有什么区别呢?
openSession()需要手动关闭session对象
getCurrentSession()可以不主动关闭,在事务进行提交/回滚之后能够自动关闭

openSession()每次都是创建新的session对象
getCurrentSession()使用线程队列中现有的session对象,类似单例模式

4Transaction

Transaction tx = session.beginTransaction();  
……  
tx.commit();


hibernate对数据库的操作均封装在事务当中,默认是非自动提交的
session保存对象时候,若不开启事务,并且手动提交,对象是不会保存到数据库中的。

相关文章

网友评论

热门评论

最新评论

发表评论 查看所有评论()

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)

关于万荚 | 联系方式 | 发展历程 | 版权声明 | 帮助(?) | 网站地图 | 友情链接

Copyright 2005-2020 16WJ.COM 〖万荚网〗 版权所有 桂ICP备18000060号 |

声明: 本站所有文章来自互联网 如有异议 请与本站联系