学完了Struts,该到Hibernate了,什么是Hibernate,我是一点概念也不知道,不过我知道它是用来和持久层打交道的,我想里面应该是增删改查和数据库连接一类的东西吧.
上网查查资料,百度百科说:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
首先Hibernate是一个开源的框架,对象关系映射应该是数据中的对象和实体映射的意思,就是说是一个将数据库表和实体映射上的开源框架,那是不是实体层就不用写太多代码了?而对于JDBC进行了轻量级的封装,JDBC对我而言就是建立Connection,打开Connection,然后增删改查,最后关闭Connection这种东西.反正就是和数据库打交道,可以增删改查,而且它是API,所以它是一堆函数组成的.而封装JDBC,就是把这堆函数封装起来.封装的目的一般是为了复用,所以Hibernate将JDBC封装应该是为了复用吧.可能之前的JDBC颗粒太小,每次用的时候都要做相同的事,所以将他们封装,就可以写一点点代码就能完成之前的功能,但是这样的灵活性应该会不好.后面那段话,就是说B/S可以用,C/S也可以用,
还有百科说 Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
Session的话,B/S中接触了很多了,就是一个会话啊,SessionFactory这是用到工厂模式了吗,还是只是Session的集合?Transaction,事务,Query查询,Criteria一种面向对象的查询方法,Configuration应该是配置.这些都是接口,接口的作用就是自己申明一些方法,然后让别人来实现.对于这几个不是很明白,大概就是知道有这么6个核心接口,应该Hibernate中的核心实现都和这些接口有着关系,很多都应该是这些接口的实现.
百科中提到了好些主键,Assigned(用户决定的主键),Hilo(高低位算法生成的主键),Increment和Identity(自增长的主键),Sequence(序列化),Native(自动选择主键生成方式),UUID和Foreign GUID(很长的主键,保证唯一)等等.这么多主键,为了方便数据库移植,看来果然是对应数据库的框架.
还有就是各种包,以及包的作用,目前看不下去.
还有缓存管理和延迟加载,也看不下去.就靠猜的吧,缓存管理,就是将常用的那部分数据放到内存中,由于内存中的读取数据是物理层的N倍,所以可以加快速度.上面写着一级缓存和二级缓存,应该就是有一个一级内存比较小但是速度超级快的缓存和一个二级内存比较大但是速度稍微慢些的缓存,这样应该是可以提高很大的速度和效率.延迟加载,就是比如打开页面的时候需要加载一些信息,但是有的信息是可以通过点击详细才能查看的,这个时候就可以将详细信息进行延迟加载,你什么时候想看,才给你加载,而不是一开始就加载给你看,这样可以提高效率.感觉就像是查看图片的时候,开始的时候给你看的只是一张张小的图片,你要看哪张,才给你慢慢加载哪张.这些应该都是用于提高效率的东西,挺好的.
最后,这些都是我通过百度百科了解的Hibernate,由于看不下去很多东西,所以有很多可能理解偏了,如果能够通过学习来发现,校验或纠正自己对于Hibernate的理解,那是再好不过的了.