实体映射技术作为类与表之间的联系纽带,在ORM实现中起着至关重要的作用,对于我们而言,映射关系更多的体现在配置文件的维护过程中。
ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。
Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.Java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml)。
一、映射类(*.java)
它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。
二、 映射文件(*.hbm.xml)
它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
在Hibernate中,类表映射主要分为三部分内容
1)表名--类名映射
2)主键映射:不同的策略
3)字段映射
<?xml version="1.0"?> <!-- XML文件头 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.oa.domain"> <!-- 配置文件根节点 -->
<class name="User" table="itcast_user"> <!-- ①类名表名映射 -->
<id name="id">
<generator class="native"/> <!-- ②Id映射 -->
</id>
<property name="loginName" /> <!-- ③属性/字段映射 -->
<property name="password" />
<property name="name" />
<property name="gender" />
<property name="phoneNumber" />
<property name="email" />
<property name="description" />
<!-- department属性 ,本类与department的多对一关系 -->
<many-to-one name="department" class="Department" column="departmentId"></many-to-one>
<!-- role属性,本类与role的多对多关系 -->
<set name="roles" table="itcast_user_role" lazy="false">
<key column="userId"></key>
<many-to-many class="Role" column="roleId"></many-to-many>
</set>
</class>
</hibernate-mapping>
XML文件头中制定了当前XML的DTD,DTD文件对当前XML文档中的节点进行了定义,在我们加载文件之前,可以通过指定的DTD对当前XML中的节点进行检查,确定XML结构和数据类型是否合法。
三、 数据库配置文件(*.properties/*.cfg.xml)
它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。
数据库连接配置(JDBC):
1、数据库适配器(dialect)
2、数据库JDBC驱动类
3、数据库URL
4、数据库用户
5、数据库密码
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 1,数据库连接信息 -->
<property name="dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>
<property name="connection.url">jdbc:mysql:///itcastoa0720</property>
<property name="connection.driver_class">com.jdbc.mysql.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<!-- 2,其他配置 -->
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<!-- 3,导入映射文件 -->
<mapping resource="cn/itcast/oa/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>