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;
在一对多的关系中,如果一的