您的位置:首页 > 其它

Hibernate单独使用 (三)表关联

2017-12-20 10:40 337 查看
一对一关联

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: