第2章 Hibernate入门
Hibernate是Java应用和关系数据库之间的桥梁,负责java对象和关系数据库之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在JAVA应用中使用Hibernate包含以下步骤:
步骤:
(1)创建Hibernate的配置文件
(2)创建持久化类
(3)创建对象-关系映射文件
(4)通过Hibernate API编写访问数据库的代码
简单的例子helloapp,演示如何运用Hibernate来访问关系数据库。应用的功能:通过Hibernate保存、更新、删除、加载及查询Customer对象。图2-1展示了Hibernate在helloapp应用中所处的位置。
2.1创建Hibernate的配置文件
Hibernate从配置文件中读取和数据库连接有关的信息。有两种形式,一种是XML格式的文件;还有一种是Java属性文件,采用“键=值”的形式。
hibernate.dialect属性用于指定被访问数据库使用的SQL方言。
2.2 创建持久化类
持久化类是指实例需要被Hibernate持久化到数据库中的类。持久化类通常是域模型(?)中的实体域类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。例如2-2定义了一个名为Customer的持久化类。
Customer持久化类有一个id属性,用来唯一标识Customer类的每个对象,在面向对象术语中,这个id属性被称为对象标识符,通常它用整数来表示,当然也可以设置为其他类型。如果customerA.getId.equals(customerB.getId())的结果是true,就表示customerA和customerB对象指的是用一个客户,它们和CUSTOMER表中的同一条记录对应。
Hibernate要求持久化类提供一个不带参数的默认构造方法,在程序运行时,Hibernate运用java反射机制,调用java.lang.reflect.Constructor.newInstance()方法来构造持久化类的实例。要求持久化类的默认构造方法的访问级别必须是public或protected类型。
2.3 创建数据库 Schema
在本例中,与Customer类对应的数据库表名为CUSTOMERS,CUSTOMERS表有一个ID字段,是表的主键,与customer类的id属性对应。
2.4 创建对象-关系映射文件
Hibernate采用XML格式的文件来指定对象和关系数据之间的映射,在运行时,Hibernate将根据这个映射文件来生成各种SQL语句。本例中,将创建一个名为Customer.hbm,xml的文件,它用于将Customer类映射到CUSTOMERS表,这个文件和Customer.class文件存放在同一个目录下。例程2-3 为Customer.hbm.xml文件的代码。
不考虑这种映射方法。
2.5 通过Hibernate API操纵数据库
Hibernate对JDBC进行了封装,提供了更加面向对象的API。图2-4和图2-5对比了直接通过JDBC API及通过Hibernate API来访问数据库的两种方式。
2.5.2 访问Hibernate的Session接口
初始化过程结束后,就可以调用SessionFactory实例的openSession()方法来获得Session实例,然后通过它来访问数据库的操作。Session接口提供了操纵数据库的各种方法,如: