【Hibernate】实体映射文件--标签了解
Hibernate的实体映射文件一般命名规则是name.hbm.xml。另外需要在文件中加入约束:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
hibernate-mapping
hibernate-mapping是一级标签,所有的配置都需要在其内部设置,并且只允许有一个hibernate-mapping。
class
class是映射的实体类,需要指定实体的全路径。
database-object
database-object是辅助数据库对象,用于针对数据库的触发器、存储过程的创建和销毁等工作。
有两种模式,一种是文件中直接显示定义
<database-object>
<create>CREATE TRIGGER my_trigger ...</create>
<drop>DROP TRIGGER my_trigger</drop>
</database-object>
一种则是提供一个类,这个类知道如何组织创建和销毁命令,并且,这个类必须继承org.hibernate.mapping.AuxiliaryDatabaseObject接口
<database-object>
<definition class="MyTriggerDefinition"/>
</database-object>
filter-def
filter-def是配置过滤器的标签,用于指定过滤器filter
import
import是引用其他类,假设你的应用程序有两个同样名字的持久化类,但是你不想在Hibernate查询中使用他们的全限定名,那么类可以被显示地引用:
<import class="java.lang.Object" rename="Universe"/>
甚至可以引用没有被明确定义类和接口:
<import
class="ClassName" (1)
rename="ShortName" (2)
/>
joined-subclass
joined-subclass是连接地子类,即每个子类可能被映射到他自己的表中(每个子类一个表的策略),被继承的状态通过和超类的表关联得到,在继承映射中可能会用到。
<joined-subclass
name="ClassName"
table="tablename"
proxy="ProxyInterface"
lazy="true|false"
dynamic-update="true|false"
dynamic-insert="true|false"
schema="schema"
catalog="catalog"
extends="SuperclassName"
persister="ClassName"
subselect="SQL expression"
entity-name="EntityName"
node="element-name">
<key .... >
<property .... />
.....
</joined-subclass>
meta
meta用来定义其他元数据。
query
query可以用来配置查询的sql语句,避免硬编码。
resultset
resultset是可以将结果集合进行处理的,一般与query查询关联出现。
sql-query
sql-query与query作用相同,是hibernate的原生sql
subclass
subclass是子类,joined-subclass属于其中的一种。
typedef
typedef是为了方便简写,当某种情况一直需要使用某个实体类,可以通过typedef定义一个简称,从而减轻书写压力。
union-subclass
union-subclass属于subclass的一种,也是在继承映射中使用的,称为联合子类,仅仅映射类继承树中具体类部分到表中(每个具体类一张表的策略)。如果你想使用多态关联(例如,一个对类继承树中超类的关联),你需要使用<union-subclass>映射。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?