Hibernate单独使用 (三)表关联

来源:互联网 发布:主要的网络侦查技术有 编辑:程序博客网 时间:2024/06/06 16:39
一对一关联
1.建立PO包:School、Header的java,建立映射文件,建立hibernate配置文件,将两个hbm文件与其绑定
2.在School里面建立一个Header类型属性,在主动方建立一个被动方的属性
3.在School的hbm文件中增加
<one-to-one
name="主动内header属性名称"
class="header属性所在类名和包"
cascade="all|none"(是否级联)/>


添加两个表
School s2 = new School(); s2.setSid("005");
Header header = new Header(); header.setHid("0765")
s2.setHeader(header);
Transaction tran = session.beginTransaction();
session.save(s2);
tran.commit();


如果从Header查School,需要在Header内添加School类型属性
=================================================================
一对多关联
1.建立po包:Banji、Student、建立Hibernate配置文件,将两个hbm文件放入Hibernate主配置内
2.在Banji里面建立Set类型的属性,准备装学生
<set name="set的Banji内属性名称" table="对应的另一个表名称" lazy="false" 延迟加载选项增加性能 


cascade="all|none" order-by="某属性来排序 asc">
<key column="需要寻找的外键列名">
</key>
<one-to-many class="另一个类的名称和包">
</set>
Set get=banji.getStudents();
Iterator ite = set.iterator();
while(ite.hasNext()){
Student stu = (Student)ite.next();
syso(stu.getSname());
}


添加个表
Student sut1 = new Student();
stu1.setBid("001");stu1.setSid("4567");
HashSet students = new HashSet();
students.add(stu1);
Banji banji = new Banji();
banji.setBid("001");banji.setRoom("803");
banji.setStudents(students);
Transaction tran = session.beginTransaction();
session.save(banji);
tran.commit();
===================================================================
多对多关联
1.建立第三个表:T_JIAOKE(TID,CID)
2.建立po:Course、Teacher、建立Hibernate配置文件,并绑定
3.在Teacher内创建Set courses,在Course内创建Set teachers
4.在两个hbm内配置
<set name="set属性名称" table="第三个对应的表名称" lazy="false" inverse="false"翻转为否,表示可


以控制别人>
<key column="本表在第三个对应表外键"></key>
<many-to-many calss="另一个表对应的类和包" column="另一个表再第三个表种对应的外键"/>
</set>
阅读全文
0 0
原创粉丝点击