hibernate 学习笔记一(初识hibernate)

来源:互联网 发布:淘宝网上怎样申请退款 编辑:程序博客网 时间:2024/04/30 10:38
我发现我没有很好的文笔,或许是因为自己的阅读量不够,条理不够清晰,不过我也在慢慢的学习,慢慢的整理自己写出来的东西,所以我希望如果能对大家有帮助就给个赞,没有帮助希望大家能给我点进步的建议,谢谢大家了!
-------------------------------------------------------------------------------------------我是分割线-----------------------------------------------------------------------------------------------------------------------------
很久以前,在我没有接触编程以前,我们的前辈们在操作数据库的时候,就只能去写JDBC来访问数据库,这样的不好处可能我们今天没有多少深刻的体会,因为我们现在遇到的项目也没有说再用JDBC了,现在往往用的都是一些框架,比如hibernate,mybatis等等,这样减去了很多冗余的代码也加快了项目开发进度,我真的是很感谢那些前辈,向他们致敬!

上面我们提过了,为什么现在用框架来访问数据库,如果有人很想知道他们之间的具体区别,好处等可以去百度一下,或者Google一下,上面有别人总结的很多,我这就不多说了,至于今天要深入复习hibernate,那么我们就由基础和简单进入来系统的看一下hibernate的魅力,当然我也不会每天更新,但是会坚持下去,如果有志同道合的朋友,可以留言,一起研究一下!

什么是hibernate?下面是百度百科找来的:


         Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
我从上面的话中感觉到一句比较厉害的话:开放源代码的对象关系映射框架!看到这句我第一反应就是他是开源的可以自己加自己想要的东西,而不担心谁会告我,其次他是面向对象的,既然是面向对象的那么一定会减少很多不必要的代码,可以让我们的开发更加方便,所以我觉得它很叼有木有?

经过上面简短的介绍,我们已经知道hibernate是干什么用的了,下面我们就来看一下它核心的一些接口和类,让我们知道怎样创建他们和他们到底是干什么用的!

核心接口和类:

SessionFactory: 

           这个接口不得不说是hibernate中的重中之重,因为它在hibernate中充当的是数据源的代理,而且它负责创建session(不是httpSession),它是重量级的,不能随意的被销毁或者创建,同时他是线程安全的,每一个sessionfactory都对应的一个数据库


session:

       上面我们说了,session是由sessionfactory创建的,session是轻量级的,线程不是安全的,可以被任意的创建和销毁,不占多少资源,hibernate中session主要负责与数据库交互,来持久化数据,执行CRUD

transaction:

       这个接口是一个可选的API,它主要用于管理事务,当然有很多朋友并不是能把事务说的很清楚,因为毕竟他很抽象,每个人理解的都不一样,但是我认为它的主要任务就是为了保证数据的一致性和完整性,为什么要说到这个接口呢,因为它包含了JDBC的事务和JTA 中的事务等,它可以让我们的代码有很好的移植性

query:

       这个接口其实我不用说,大家看它的名字就能猜到了,没错,这玩儿就是用来执行我们写好的SQL的,当然它还可以执行HQL语言来查询

criteria:
        这个接口和query接口类似,只是API不同而已,它和query一样是轻量级的,不能找session外使用
configuration:
       这个类虽然用的地方很少,但是hibernate启动遇到的第一个类就是它了,你一定会问为什么?你看它的名字一看就是用来加载配置的,如果启动没有加载配置,那么我们还能用hibernate吗?还能找到我们对应操作的数据库吗?

数据对象的三种状态:

        这个东西在hibernate中是比较重要的概念,同时他又有一点点抽象,不过我会把我的理解写上去的!
1、transient(瞬时状态)
其实这个很好理解,就是一个对象刚刚被new出来的时候,没有进行任何操作的时候,他就是瞬时状态
2、prisistent(持久化状态)
持久化状态就是数据保存进入数据库,这时候数据还没有脱离session的管理
3、detached(离线状态)
这个状态就是数据库里有该对象的数据,但是此对象已经脱离了session的管理
下面给一张图看看:


好了,以上就是对hibernate的基本认识,还有很多重要的东西就不在这里讲了因为后面的东西要配合代码一起写,所以就请大家稍安勿躁!



0 0
原创粉丝点击