Hibernate 映射 xml方式

Hibernate 映射1.大对象映射图片,视频,文本等可以转换为字节或字符数组,使用Blob 或 Clob 格式存入到数据库当中​ 只针对对象不大,不多的情况下.​ 图片,视频使用 Blob 格式​ 文本使用 Clob格式2.组件映射–组合映射一个对象中包含另外一个对象​ 配置 hbm.xml时 , 引入 component 标签关联属性,其他不变.例如 ...
摘要由CSDN通过智能技术生成

Hibernate 映射

1.大对象映射

图片,视频,文本等可以转换为字节或字符数组,使用Blob 或 Clob 格式存入到数据库当中
​ 只针对对象不大,不多的情况下.
​ 图片,视频使用 Blob 格式
​ 文本使用 Clob格式

2.组件映射–组合映射

一个对象中包含另外一个对象
​ 配置 hbm.xml时 , 引入 component 标签关联属性,其他不变.
例如

        <component name="detail" class="Detail">
            <property name="address"/>
            <property name="phoneNum"/>
            <property name="hobby"/>
        </component>

3.组件映射–复合主键映射

两个或两个以上的字段确定一个唯一性,那么不需要再设置id
​ 比如成绩表中 学科id 学生id 就可以确定一个唯一的对象,那么不需要再额外设置一个逐渐id
​ hbm.xml 中配置如下,其他不变
例如

<composite-id name="scoreId" class="ScoreId">
           <key-property name="subId"/>
            <key-property name="stuId"/>
        </composite-id>

4.关系映射多对一

​ 其中一个表的多个属性,对应另外一个表的某一个属性

​ 比如 学生表的年级 对应 年级表的 年级

​ (多端中)hbm.xml 中配置如下,其他不变

<many-to-one name="grade" class="Grade" column="grade_id" />

5.关系映射单向一对多

​ 其中一个表的某行,对应另外一个表的多行

​ 比如: 年级表的年级 对应 学生表的年级

​ (一端中)hbm.xml中配置如下,其他不变

		<set name="students" >
            <key column="grade_id" foreign-key="fk_grade" not-null="true"></key>
            <one-to-many class="Student"/>
        </set>

不管是多对一 还是 一对多 ,都要先保存 一表 再保存 多表.

6.关系映射—双向一对多

​ 多对一和一对多配置同时开启即可

在双向一对多关系映射中,通过观察最后的运行结果,可以得出以下结论:

注意一的一端的配置: 中不用指定关联列非空;

如果想要一的一端来维护关系,那么在多的一端不用指定关联列非空;

关系由多的一端来维护,DML语句会少执行UPDATE语句,效率较高。

7.关系映射—级联操作

多端配置

<many-to-one name="grade" class="Grade" column="grade_id" cascade="save-update" />

一端配置

<set name="students" cascade="save-update">
    <key column="grade_id" foreign-key="fk_grade" ></key>
    <one-to-many class="Student"/>
</set>

如果需要级联删除,配置改为 delete 即可

在多对一的关系中,多的一端不能操作级联为delete。一般在多的一端设为save-update;

在一对多的关系中,如果一的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值