由于时间的关系,我今天只能初步的跟大家讨论一下学习数据持久化和Hibernate的概念与技术的一些所需要知道的知识,在后续的文章中我还会给出如何使用Eclipse来建立和使用Hibernate技术来操作数据库。
1.数据持久化的概述
Persistent是为了解决关系型数据库和对象型编程语言之间的冲突,持久化可以将记录转换为对象。在对象数据库出现并流行之前,持久化是解决并避免对象型编程操作数据的非对象操作的最好途径。数据的持久化就是指将从数据库取出的数据进行封装,放在一个对象里,目的是为了以后的使用更加的高效,不必每次都从数据库里取数据,这对减轻数据库服务器的负载很有作用。
2.ORM的基本概念
O/R Mapping(对象关系映射)实现了Java应用中对象到关系数据库中表的自动的和透明的持久化,使用meta data描述对象与数据库间的映射,优点就是可以增加程序的可维护性,提供更好的性能。
3.POJO与PO的概念和比较
Pure Old Java Object用来与数据库表建立映射的JAVA文件,Persisent Object是在操作数据库的时候,创建的对象。POJO是由new创建,由JAVA的GC收回。但是PO是由数据库创建,由数据库删除。PO往往指能存在一个数据库的CONNECTION中,CONNECTION关闭之后,PO就不存在了,而POJO只要不被GC,总是存在的。PO相对于POJO会增加一些管理数据库entity状态的属性和方法。
4.JDO的实现机制
JDO的实现方法有点类似于JSP,具体过程如下:编写POJO,编译POJO;使用ENHANCER或在ANT里面运行,对POJO的CLASS文件处理,把POJO替换为PO,所以在运行期间运行的实际是PO。
5.Hibernate的实现机制
Hibernate的实现方法很先进:编写POJO ,编译POJO,直接运行,由Hibernate的CGLIB动态把POJO转换为PO。应用程序通过Hibernate对数据库进行访问,对数据持久层操作,而Hibernate自身通过properties和XML Mapping文件将类映射到数据库的记录,从而Application可以通过模型中骑着应用与数据库直接的桥梁作用的PO,这个过程并不是必须使用JDBC和数据库精心数据的操作。
6.Hibernate与JDBC、EJB、JDO的一些比较
(1)JDBC 它可以通过DAO模式进行改善和提高,但在大型应用程序中不容易操作和使用,并且维护困难。
(2)EJB 它通常是在数据持久技术上的第二个选择,是通过entitybeans来对数据进行持久化。在EJB中实现JDBC比较复杂。
(3)JDO 它没有一个好的开源免费实现,也不是一个轻量级封装,JDO的标准还很不完善并且产品分裂问题也严重。
(4)Hibernate 它不需要任何的容器,提供了简单易用的API,也解决了JDO的很多缺陷,是一个良好的ORM。
7.Hibernate的特点
(1)透明地提供对象与关系数据库的映射,以统一的接口方式来支持多种数据库
(2)缓存机制,针对数据库的操作大大减少
(3)开源免费的Licence
(4)轻量级的封装
(5)可自行代码扩展
(6)产品有文档的发展保障
以上就是我参考一些书籍和自学的一些总结,拿出来跟大家交流,希望大家给出批评,我会在后续的文章中给出Eclipse来建立和使用Hibernate技术来操作数据库的例子。