Hibernate 映射文件

Hibernate 映射文件是一种配置文件,用于定义 Java 类与数据库表之间的映射关系。这种映射文件通常使用 XML 格式编写,虽然现在更常用的是直接在 Java 类上使用 JPA 注解来完成同样的工作。但是,了解 XML 映射文件仍然非常重要,特别是在需要进行更复杂的映射配置时。

下面是一个简单的 Hibernate 映射文件的例子,它展示了如何将一个简单的 Java 类映射到一个数据库表:

示例 Java 类

假设我们有一个 Person 类,它代表数据库中的 person 表。

package com.example.model;

public class Person {
    private Integer id;
    private String firstName;
    private String lastName;
    private int age;

    // 构造函数、getter 和 setter 方法省略
}

映射文件

对于这个 Person 类,我们可以创建一个映射文件 Person.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "https://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.example.model.Person" table="person">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>
        
        <property name="firstName" column="first_name"/>
        <property name="lastName" column="last_name"/>
        <property name="age" column="age"/>
    </class>
</hibernate-mapping>

映射文件解析

让我们来逐行解析这个映射文件:

  1. XML 声明

    • <?xml version="1.0" encoding="UTF-8"?> 定义了 XML 文件的版本和编码。
  2. DTD

    • <!DOCTYPE hibernate-mapping ...> 定义了文档类型定义 (DTD),它指定了 Hibernate 映射文件的结构和规则。在这个例子中,我们使用的是 Hibernate 3.0 的 DTD。
  3. 根元素

    • <hibernate-mapping> 是映射文件的根元素。
  4. 类元素

    • <class> 定义了一个实体类及其对应的数据库表。
      • name: 实体类的完全限定名。
      • table: 数据库表的名称。
  5. 标识符元素

    • <id> 定义了主键字段。
      • name: 主键字段的名称。
      • column: 数据库表中对应的列名。
      • <generator>: 主键的生成策略。这里使用的是 increment,意味着每次插入新记录时,主键值会自动递增。其他常见的策略有 identity, sequence, 和 native
  6. 属性元素

    • <property> 定义了实体类中的非主键属性以及它们在数据库表中的对应列。
      • name: 属性的名称。
      • column: 数据库表中对应的列名。

配置 Hibernate

要让 Hibernate 识别这个映射文件,你需要将其添加到 Hibernate 的配置文件(通常是 hibernate.cfg.xml 或者 persistence.xml)中。以下是 hibernate.cfg.xml 的一个简单示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "https://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
        <property name="hibernate.connection.username">username</property>
        <property name="hibernate.connection.password">password</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        
        <mapping resource="com/example/model/Person.hbm.xml"/>
        
        <!-- 其他配置省略 -->
    </session-factory>
</hibernate-configuration>

使用映射文件

一旦你定义了映射文件,并且将其添加到了 Hibernate 的配置中,你就可以使用 Hibernate API 来操作数据库了。例如,你可以打开一个 Session,然后使用 save(), update(), get(), delete() 等方法来进行 CRUD 操作。

Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;

try {
    tx = session.beginTransaction();
    Person person = new Person();
    person.setFirstName("John");
    person.setLastName("Doe");
    person.setAge(30);
    
    session.save(person);
    tx.commit();
} catch (HibernateException e) {
    if (tx != null) {
        tx.rollback();
    }
    e.printStackTrace();
} finally {
    session.close();
}

总结

使用 XML 映射文件允许你在不修改 Java 类的情况下调整映射细节,这在一定程度上分离了业务逻辑与数据访问层。然而,在现代应用开发中,JPA 注解因为其简洁性和易用性而更为流行。不过,在需要进行复杂的映射配置时,XML 映射文件仍然是一个非常有用的工具。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值