Hibernate,自我理解,大佬勿喷

来源:互联网 发布:3dsmax模型怎么优化 编辑:程序博客网 时间:2024/04/30 22:25

Hibernate,自我理解,大佬勿喷

本人小白一只,最近学习了Hibernate,将自己的学习经验分享给大家

- 1).Hibernate是什么
- Hibernate是一种ORM框架也就是对象/关系映射,那么问题来了,小白的我,就在想什么是ORM?随着度娘的各种大佬,对于ORM也有一个简单的理解,ORM及对象关系映射,在我们开发过程中往往会将数据储存在关系数据库当中,这样的话我们需要编写特别多数据库相关的sql语言。当时在使用不同的数据库的时候sql语句也大大不同,就拿分页来说,SqlServer 有top,mysql有limit 。如果我们过分的依赖于SQL语言的话,会严重影响我们的程序可移植性和可扩展性。看了这些东西后不得佩服ORM,有了ORM我们就可以完全使用ORM的思想(如有不懂可以百度ORM)。

2.Hibernate
Hibernate对java JDBC 进行了轻量级的对象封装。他的底层原理仍然是JDBC

3.hibernate的执行流程
1.首先创建 Configuration他们定位读取 hibernate配置文档以及核心映射文件。虽然只是在启动项目的时候用的,但是非常重要!
2.Configuration获得配置文档目的是为了创建SessionFactory工厂对象(创建和销毁都特别消耗资源,通常一个项目只创建一个SessionFactory对象,除非使用多个数据库,你也可以选择创建多个SessionFactory)
3.由SessionFactory创建Session对象(Hibernate 中的Session可不是HttpSession。刚开始我还以为这二个一样呢!哈哈)
4.然后获取Session后就能对数据进行一些操作,

4.Configuration
Configuration 接口的作用是对Hibernate进行配置,启动,在启动Hibernate的时候Configuration接口会首先定位映射文件的位置进行读取配置然后创建sessionFactory对象
5.Sessionfactory
Configuration读取完配置文件之后创建sessionFactory对象。
SessionFactory这个接口负责初始化Hibernate,充当数据存储代理站。他可以创建Session对象,但是呢上面也提到过,sessionFactory并不是轻量级的,一个项目往往只是用一个sessionFactory,除非你使用多个数据库的时候,当然SessionFactory是线程安全的。其实呢SessionFactory也有起到了一个缓冲的作用,至于这个小白的我也没有深究。
6.session
之前也提过这里的Session并非httpSession中的session。
httpsession是指用户回话,而这里的session是程序和数据库的一次回话。不知道这样说清晰不清晰反正我这样理解的,也不知道大佬们怎么看。
Session是一个轻量级对象,但是线程是不安全的。我们尽量避免多个线程访问一个Session

7.学习经验

小白(误入IT深坑不能自拔,这里就不吐槽了。),初探Hibernate感觉Hibernate非常强大。当然学习过程中也遇见各种奇葩的问题,但是只要努力耐心的学习这些问题还是可以解决的。目前对其余的两大接口并不是很清晰。所以不提出对Hibernate更多的看法。哈哈 大佬们勿喷。