hibernate不是直接操作数据库表而是操作数据库表中对应的实体类。
对象关系映射概述
1。持久化对象不是通过外健建立关联关系,而是通过属性
2。持久化类间关联关系的种类:一对一,多对一(最常见),多对多。
3。持久化类的关联方向:单向关联和双向关联。
1。一对多关联单向关联关系
1。 日常中常见的一对多:留言和回复、类别和商品、班级和学生等。
2、数据库表间的一对多关联关系:通过外健建立两个表的联系。
3、hibernate持久化类的一对多关联关系
1、持久化类添加关联类的相关属性及get/set方法
2、映射文件中建立该属性和数据库表字段的映射关系。
示例一:为班级和学生类添加一对多关系
班级类的代码
private int gid //班级编号 private String gname //班级名称 private Set students=new HashSet();//学生set集合 .......get/set方法
映射文件
<Set name="Students"> <key column=gid"></key> --students表的外健 <one-to-many class="包名.类名"/> </Set>
测试类可以通过grade类对象.getStudents()得到全部学生信息。也可以通过grade类对象.getStudents().add(stu);添加学生表的信息
示例二:为学生类和班级类添加多对一单向关联关系
学生类代码
private String sname //学生姓名 private String sex //性别 private int age //年龄 private Grade grade //班级属性 ......get/set方法
映射文件
<many-to-one name="grade" class="包名.类名"> --属性名 <column name="gid"></column> --学生表中的外健关联字段 </many-to-one>
可以通过学生对象获得班级信息
2。一对多双向关联关系:同时建立多对一和一对多单向关联关系就可以形成
3。配置级联属性:cascade属性 作用是实现级联操作关联对象
常用属性值和功能描述
属性值 | 功能 |
none | 不对关联对象进行任何级联操作,为cascade默认值 |
save-update | 保存和更新该对象时,级联更新和保存关联对象 |
delete | 删除该对象时级联删除关联对象 |
all | 所有操作都级联 |
4。配置反转属性inverse:作用:将维护关联关系的任务反转,由对方来完成
常用属性值和功能描述:false:为不放弃关联关系维护 true:为放弃关联关系维护
注意inverse属性只要用于集合属性中,即“一”方反转关联关系维护给“多”方。