.hbm.xml文件仍用于老项目维护等场景,核心是类表、属性字段准确映射,含id主键配置(native/identity/sequence等)、关联映射(set+one-to-many与many-to-one配合inverse)、集合(list/map)及组件(component)声明。

Hibernate 的 .hbm.xml 映射文件虽已逐渐被注解和 JPA 方式取代,但在维护老项目、需要高度灵活映射或统一管理 SQL 逻辑时仍有实用价值。配置关键在于类与表、属性与字段的准确对应,以及主键、关联、集合等结构的正确声明。
基础结构:一个最简 hbm.xml 文件
每个映射文件对应一个实体类,根元素为 <hibernate-mapping></hibernate-mapping>,内部用 <class></class> 声明映射关系:
br> "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
注意:
– package 属性可省略,但建议设置,避免写全限定类名
– name 是类名(非全路径,因有 package)
– column 默认与 name 同名,可省略;显式写出更清晰
– type 可省略,Hibernate 会按属性类型自动推断(如 String → varchar)
主键配置:id 和 generator 的常见组合
<id></id> 必须定义,其子元素 <generator></generator> 指定主键生成策略:
- native:根据方言自动选 identity / sequence / hilo(推荐用于跨数据库)
- identity:依赖数据库自增(MySQL、SQL Server 支持)
-
sequence:使用数据库序列(Oracle、PostgreSQL 推荐),需加
<param name="sequence">seq_user_id - uuid:生成 32 位字符串 UUID,无需数据库支持
-
assigned:由程序手动赋值(如业务编码),此时需去掉
<generator></generator>
关联映射:一对多、多对一怎么写
以“用户(User)→ 订单(Order)”为例,User 有一组订单,Order 属于一个 User:
在 User.hbm.xml 中添加:
说明:用途:程序员、美工、中小型科技公司接单建站使用1.将此文件夹下的文件传入根目录下2.数据库文件:company.sql3.把数据库文件导入数据库4.修改数据库链接信息(用户名、密码,数据库名):/inc/dabase_mysql.php5.超级帐号webmaster 密码:123456 后台管理目录/cdguanli6.后台栏目配置和前台插件的调用方式,请见官网教程。7.前台插件调用示例相比
在 Order.hbm.xml 中添加:
说明:
– cascade 控制级联操作(如保存 User 时是否自动保存 orders)
– inverse="true" 表示本端不负责维护外键(由 Order 的 many-to-one 端控制),避免重复更新
– not-null="true" 对应数据库字段非空约束,也影响插入校验
集合映射与组件:list、map、component 怎么用
当属性是集合或嵌入对象时,用对应标签:
-
<list-index column="idx"></list-index> -
:键值对,用
<map-key column="key_col" type="string"></map-key>定义键 -
:映射值对象(如 Address),不单独建表,字段直接落在主表中
例如 User 有一个嵌入的 Address:
基本上就这些。hbm.xml 配置不复杂但容易忽略细节,比如 DTD 路径写错、column 名大小写不一致、inverse 设置反了导致外键为空——调试时优先检查这些地方。









