论文部分内容阅读
摘要:对象持久化技术是一种数据存储方法,其目的是为了使程序开发者更加方便的访问数据。对象持久化技术解决了面向对象技术和关系数据库技术的不匹配问题,使得程序员从数据库细节中解放出来,让程序员有更多的精力去处理事务逻辑。
关键词:对象;持久化;对象关系映射;Hibernate
中图分类号:TP312文献标识码:A文章编号:1009-3044(2011)19-4733-02
Study on Object Persistence of Hibernate
WEI Hui-ru, LI Xiao-dong, REN Gang
(Chenggong College of Henan University of Economics and Law, Zhengzhou 451200, China)
Abstract: The object persistence technology is a method of data storage, it makes the programmer more easily access the data. And it solves the problem of matchbetween the Object-oriented technology and the Relational Database technology, liberates the programmer from dealing with the details of the database, so that the programmerhavemoreenergyto deal with transaction.
Key words: object; persistent; object-relational mapping; Hibernate
1 什么是对象持久化
对象持久化[1]是将程序数据在持久状态和瞬时状态间转换的机制,并在需要对象数据的时候,能够方便地提取出来。
对象持久化是通过对象关系映射[2]完成的,通过映射将在数据库中直接进行的增删改查操作转换为对类的属性和方法的操作。在实际应用中,很多对数据库中数据的处理,如表记录的增加、删除、修改、查询的工作,通过对象关系映射可以将这些操作转移到前台的逻辑层来,而数据库工具将更加专注于数据的管理,把操作和管理分开是对象关系映射的核心设计思想。
2 不使用对象持久化的缺点
在通常的数据库程序设计中需要做三件事,与数据库建立连接,发送操作数据库的SQL语句,处理结果。示例如下:
Class.forName(driverName);
Connection Conn =
DriverManager.getConnection(dbURL, userName, userPwd);
String SQL="select*fromtable";
PreparedStatement ps = Conn.prepareStatement(SQL);
ResultSet rs = ps.executeQuery();
上面的代码是没有使用对象持久化技术的代码,其实有很多问题。结构化查询语句SQL被手工编码并大量嵌入到代码中,结构不清楚,维护性、可重用性很差。目前面向对象的开发方法成为主流,我们希望的是能够直接从数据库中取出或者保存对象数据。
3 使用对象持久化的优点
上面介绍了没有使用对象持久化技术的缺点,正是为了解决这些问题,对象持久化技术诞生了,有了对象持久化技术后,数据操作以类对象为单元,下面的代码片段说明了这个问题。
Session session = factory.getSessionFactory().openSession();
session.beginTransaction();
ClassDemo classDemo=new ClassDemo();
session.save(classDemo);
session.getTransaction().commit();
session.close();
上述代码通过save()方法直接将classDemo对象持久化到数据库,代码中没有结构化查询语句 ,结构清晰,代码可读性强。
4 对象持久化技术应用
在应用系统中使用对象持久化技术需要进行以下四个步骤:
1) 创建Hibemate系统配置文件
Hibernate框架为了能够在各种不同物理数据库环境下都能很好的工作,提供了对数据库进行连接的配置参数,这些配置参数集中放在一个文件中,通常使用Hibernate.cfg.xml文件[3]。下面是一个典型的配置文件:
driver
database
name
pwd
DBDialect
2) 设计持久化类
持久化类就是在领域中设计的模型,是在面向对象程序中建立的类,这些类通常都是实体类,我们利用它们携带数据,这些实体类对象可以用Hibemate框架持久化到数据库中。
3) 建立对象关系映射
持久化类设计完成以后,就可以建立对象和关系数据库表之间的映射了。
在映射中,基本原则是:类映射成数据库表,属性映射成数据库表中的字段。
4) 通过Hibemate 框架提供的方法编写访问数据库的代码
在Hibernate框架中提供了一个Session接口,它是Hibernate框架持久化管理器的核心,该接口提供了众多的持久化方法,如 save(),load(),get(),delete() ,update()等,通过这些方法我们可以透明的完成对象的增加,修改,查询和删除操作。
Session对象是有生命周期的[4],它以Transaction对象的开始和结束为边界。一般情况下,每一个Session对象实例与一个数据库事务绑定,执行一个数据库事务操作,都应该先创建一个新的Session实例对象。不论事务执行成功与否,最后都应该调用Session对象实例的close()方法,从而释放Session对象实例占用的资源。事务执行中如果出现异常,应该撤消事务。
下面的例子讲解了如何利用Session持久化数据:
Session session = factory.openSession();
Transaction transaction;
try { transaction = session.beginTransaction();
//其他操作
transaction.commit();
} catch (Exception e) {
if (tx!=null)
transaction.rollback();
throw e;
} finally {
session.close();
}
5 小结
Hibernate框架解决了面向对象技术和关系数据库技术的不匹配问题,使得程序员从数据库细节中解放出来,让程序员有更多的精力去处理事务逻辑,将会越来越受到面向对象程序设计者的关注。
参考文献:
[1] 孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社,2005.
[2] Minter D.Linwood,Hibernate基础教程[M].北京:人民邮电出版社,2008.
[3] 李刚.轻量级Java EE企业应用实战[M].北京:电子工业出版社,2009.
[4] 杨少波.J2EE项目实训-Hibernate框架技术[M].北京:清华大学出版社,2008.
关键词:对象;持久化;对象关系映射;Hibernate
中图分类号:TP312文献标识码:A文章编号:1009-3044(2011)19-4733-02
Study on Object Persistence of Hibernate
WEI Hui-ru, LI Xiao-dong, REN Gang
(Chenggong College of Henan University of Economics and Law, Zhengzhou 451200, China)
Abstract: The object persistence technology is a method of data storage, it makes the programmer more easily access the data. And it solves the problem of matchbetween the Object-oriented technology and the Relational Database technology, liberates the programmer from dealing with the details of the database, so that the programmerhavemoreenergyto deal with transaction.
Key words: object; persistent; object-relational mapping; Hibernate
1 什么是对象持久化
对象持久化[1]是将程序数据在持久状态和瞬时状态间转换的机制,并在需要对象数据的时候,能够方便地提取出来。
对象持久化是通过对象关系映射[2]完成的,通过映射将在数据库中直接进行的增删改查操作转换为对类的属性和方法的操作。在实际应用中,很多对数据库中数据的处理,如表记录的增加、删除、修改、查询的工作,通过对象关系映射可以将这些操作转移到前台的逻辑层来,而数据库工具将更加专注于数据的管理,把操作和管理分开是对象关系映射的核心设计思想。
2 不使用对象持久化的缺点
在通常的数据库程序设计中需要做三件事,与数据库建立连接,发送操作数据库的SQL语句,处理结果。示例如下:
Class.forName(driverName);
Connection Conn =
DriverManager.getConnection(dbURL, userName, userPwd);
String SQL="select*fromtable";
PreparedStatement ps = Conn.prepareStatement(SQL);
ResultSet rs = ps.executeQuery();
上面的代码是没有使用对象持久化技术的代码,其实有很多问题。结构化查询语句SQL被手工编码并大量嵌入到代码中,结构不清楚,维护性、可重用性很差。目前面向对象的开发方法成为主流,我们希望的是能够直接从数据库中取出或者保存对象数据。
3 使用对象持久化的优点
上面介绍了没有使用对象持久化技术的缺点,正是为了解决这些问题,对象持久化技术诞生了,有了对象持久化技术后,数据操作以类对象为单元,下面的代码片段说明了这个问题。
Session session = factory.getSessionFactory().openSession();
session.beginTransaction();
ClassDemo classDemo=new ClassDemo();
session.save(classDemo);
session.getTransaction().commit();
session.close();
上述代码通过save()方法直接将classDemo对象持久化到数据库,代码中没有结构化查询语句 ,结构清晰,代码可读性强。
4 对象持久化技术应用
在应用系统中使用对象持久化技术需要进行以下四个步骤:
1) 创建Hibemate系统配置文件
Hibernate框架为了能够在各种不同物理数据库环境下都能很好的工作,提供了对数据库进行连接的配置参数,这些配置参数集中放在一个文件中,通常使用Hibernate.cfg.xml文件[3]。下面是一个典型的配置文件:
2) 设计持久化类
持久化类就是在领域中设计的模型,是在面向对象程序中建立的类,这些类通常都是实体类,我们利用它们携带数据,这些实体类对象可以用Hibemate框架持久化到数据库中。
3) 建立对象关系映射
持久化类设计完成以后,就可以建立对象和关系数据库表之间的映射了。
在映射中,基本原则是:类映射成数据库表,属性映射成数据库表中的字段。
4) 通过Hibemate 框架提供的方法编写访问数据库的代码
在Hibernate框架中提供了一个Session接口,它是Hibernate框架持久化管理器的核心,该接口提供了众多的持久化方法,如 save(),load(),get(),delete() ,update()等,通过这些方法我们可以透明的完成对象的增加,修改,查询和删除操作。
Session对象是有生命周期的[4],它以Transaction对象的开始和结束为边界。一般情况下,每一个Session对象实例与一个数据库事务绑定,执行一个数据库事务操作,都应该先创建一个新的Session实例对象。不论事务执行成功与否,最后都应该调用Session对象实例的close()方法,从而释放Session对象实例占用的资源。事务执行中如果出现异常,应该撤消事务。
下面的例子讲解了如何利用Session持久化数据:
Session session = factory.openSession();
Transaction transaction;
try { transaction = session.beginTransaction();
//其他操作
transaction.commit();
} catch (Exception e) {
if (tx!=null)
transaction.rollback();
throw e;
} finally {
session.close();
}
5 小结
Hibernate框架解决了面向对象技术和关系数据库技术的不匹配问题,使得程序员从数据库细节中解放出来,让程序员有更多的精力去处理事务逻辑,将会越来越受到面向对象程序设计者的关注。
参考文献:
[1] 孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社,2005.
[2] Minter D.Linwood,Hibernate基础教程[M].北京:人民邮电出版社,2008.
[3] 李刚.轻量级Java EE企业应用实战[M].北京:电子工业出版社,2009.
[4] 杨少波.J2EE项目实训-Hibernate框架技术[M].北京:清华大学出版社,2008.