Hibernate是一个Java框架,用于将Java对象映射到关系型数据库中。它使用映射文件来描述Java类和数据库表之间的映射关系。
一、映射文件的结构
Hibernate映射文件通常使用XML格式编写,并以".hbm.xml"作为文件扩展名。它由根元素<hibernate-mapping>包围,可以包含以下元素:
- <class>:定义Java类和数据库表之间的映射关系。
- <id>:定义主键字段的映射。
- <property>:定义普通字段的映射。
- <many-to-one>:定义多对一关系的映射。
- <one-to-many>:定义一对多关系的映射。
- <many-to-many>:定义多对多关系的映射。
- <join>:定义表间连接关系的映射。
- <union-subclass>:定义继承关系的映射。
- <component>:定义组件属性的映射。
下面是一个示例的Hibernate映射文件结构:
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example.model">
<class name="Employee" table="employees">
<id name="id" column="employee_id">
<generator class="increment"/>
</id>
<property name="firstName" column="first_name"/>
<property name="lastName" column="last_name"/>
<many-to-one name="department" class="Department" column="department_id"/>
</class>
</hibernate-mapping>
二、映射文件元素详解
- <class> 元素 <class>元素用于定义Java类和数据库表之间的映射关系。它包含name属性(指定Java类名)、table属性(指定数据库表名)等。在<class>元素内部可以定义<id>、<property>、<many-to-one>等子元素。
- <id> 元素 <id>元素用于定义主键字段的映射。它包含name属性(指定Java类的属性名)、column属性(指定数据库表的列名)等。
- <property> 元素 <property>元素用于定义普通字段的映射。它包含name属性(指定Java类的属性名)、column属性(指定数据库表的列名)等。
- <many-to-one> 元素 <many-to-one>元素用于定义多对一关系的映射。它包含name属性(指定Java类的属性名)、class属性(指定关联的Java类)、column属性(指定数据库表的列名)
- <one-to-many> 元素 <one-to-many>元素用于定义一对多关系的映射。它包含name属性(指定Java类的属性名)、class属性(指定关联的Java类)、column属性(指定数据库表的列名)等。
- <many-to-many> 元素 <many-to-many>元素用于定义多对多关系的映射。它包含name属性(指定Java类的属性名)、class属性(指定关联的Java类)、table属性(指定中间表的表名)、column属性(指定中间表与当前表关联的列名)等。
- <join> 元素 <join>元素用于定义表间连接关系的映射。它包含table属性(指定关联表的表名)、key属性(指定当前表与关联表连接的外键)等。
- <union-subclass> 元素 <union-subclass>元素用于定义继承关系的映射。它包含name属性(指定Java类的属性名)、table属性(指定子类对应的数据库表名)等。
- <component> 元素 <component>元素用于定义组件属性的映射。它包含name属性(指定组件属性的名称)、class属性(指定组件属性对应的Java类)、column属性(指定数据库表的列名)等。