.hbm.xml文件定义Java类与数据库表的映射关系,包括实体与表的对应、主键生成策略(如native、uuid)、属性与字段的类型映射(通过<property>标签)以及关联关系配置(如<many-to-one>),支持集中化管理映射逻辑,适用于旧项目或需解耦配置的场景。

Hibernate 的 .hbm.xml 文件是 Hibernate 框架中用于定义持久化类与其对应数据库表之间映射关系的配置文件。它是一种基于 XML 的映射方式,告诉 Hibernate 如何将 Java 类的属性与数据库表的字段进行关联。
1. 定义实体与表的映射关系
每个 .hbm.xml 文件通常对应一个 Java 实体类,通过该文件指定:
- Java 类名(class name)
- 对应的数据库表名(table name)
- 主键字段及其生成策略
- 普通属性与数据库列的映射(如类型、长度、是否为空等)
例如,一个 User 类可以映射到 user_table 表,其中 id 映射为主键,name 映射为 username 列。
2. 配置主键生成策略
在 .hbm.xml 中可以通过 <id> 元素配置主键,并使用 <generator> 子元素指定主键生成方式,比如:
- assigned:手动指定主键值
- increment:适用于单实例环境的自增
- native:根据数据库选择 identity、sequence 或 hilo
- uuid:生成 UUID 字符串作为主键
这使得 Hibernate 能自动处理主键的生成逻辑。
3. 映射属性与字段
通过 <property> 标签将 Java 类的普通属性映射到数据库列,可设置列名、数据类型、是否唯一、是否允许为空等约束。
支持的基本类型包括 string、int、date、boolean 等,Hibernate 会自动转换 Java 类型和 SQL 类型。
4. 支持关联关系映射
.hbm.xml 还能描述实体之间的关系,比如:
- <many-to-one>:多对一关系(如订单属于用户)
- <one-to-many>:一对多关系(如用户拥有多个订单)
- <one-to-one>:一对一关系
- <many-to-many>:多对多关系,需中间表支持
这些标签让 Hibernate 自动处理外键引用和级联操作。
基本上就这些。虽然现在多数项目使用注解(如 @Entity、@Table)替代 XML 映射,但在一些老项目或需要解耦配置的场景中,.hbm.xml 仍具有实用价值。它把映射逻辑集中管理,便于维护和调整,不需要修改 Java 代码即可调整数据库结构映射。










