Hibernate 映射文件

2023-05-15 14:52:25 浏览数 (3)

Hibernate是一个Java框架,用于将Java对象映射到关系型数据库中。它使用映射文件来描述Java类和数据库表之间的映射关系。

一、映射文件的结构

Hibernate映射文件通常使用XML格式编写,并以".hbm.xml"作为文件扩展名。它由根元素<hibernate-mapping>包围,可以包含以下元素:

  1. <class>:定义Java类和数据库表之间的映射关系。
  2. <id>:定义主键字段的映射。
  3. <property>:定义普通字段的映射。
  4. <many-to-one>:定义多对一关系的映射。
  5. <one-to-many>:定义一对多关系的映射。
  6. <many-to-many>:定义多对多关系的映射。
  7. <join>:定义表间连接关系的映射。
  8. <union-subclass>:定义继承关系的映射。
  9. <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>

二、映射文件元素详解

  1. <class> 元素 <class>元素用于定义Java类和数据库表之间的映射关系。它包含name属性(指定Java类名)、table属性(指定数据库表名)等。在<class>元素内部可以定义<id>、<property>、<many-to-one>等子元素。
  2. <id> 元素 <id>元素用于定义主键字段的映射。它包含name属性(指定Java类的属性名)、column属性(指定数据库表的列名)等。
  3. <property> 元素 <property>元素用于定义普通字段的映射。它包含name属性(指定Java类的属性名)、column属性(指定数据库表的列名)等。
  4. <many-to-one> 元素 <many-to-one>元素用于定义多对一关系的映射。它包含name属性(指定Java类的属性名)、class属性(指定关联的Java类)、column属性(指定数据库表的列名)
  5. <one-to-many> 元素 <one-to-many>元素用于定义一对多关系的映射。它包含name属性(指定Java类的属性名)、class属性(指定关联的Java类)、column属性(指定数据库表的列名)等。
  6. <many-to-many> 元素 <many-to-many>元素用于定义多对多关系的映射。它包含name属性(指定Java类的属性名)、class属性(指定关联的Java类)、table属性(指定中间表的表名)、column属性(指定中间表与当前表关联的列名)等。
  7. <join> 元素 <join>元素用于定义表间连接关系的映射。它包含table属性(指定关联表的表名)、key属性(指定当前表与关联表连接的外键)等。
  8. <union-subclass> 元素 <union-subclass>元素用于定义继承关系的映射。它包含name属性(指定Java类的属性名)、table属性(指定子类对应的数据库表名)等。
  9. <component> 元素 <component>元素用于定义组件属性的映射。它包含name属性(指定组件属性的名称)、class属性(指定组件属性对应的Java类)、column属性(指定数据库表的列名)等。

0 人点赞