百度做网站推广多少钱,sentos上部署.net网站,怎么自己开一个平台,wordpress 发布模块一、多对一进行关联(多个学生对应同一间宿舍)---学生是主体#xff0c;宿舍是附体#xff0c;关联关系在主体学生中设置#xff0c;在学生类中设置宿舍类#xff0c;由于宿舍类只有一个可以直接用类来设置,在映射学生类(User)中包含宿舍这个类(Room),在映射配置文件(User.h…一、多对一进行关联(多个学生对应同一间宿舍)---学生是主体宿舍是附体关联关系在主体学生中设置在学生类中设置宿舍类由于宿舍类只有一个可以直接用类来设置,在映射学生类(User)中包含宿舍这个类(Room),在映射配置文件(User.hbm.xml)中定义哪个是主体类就在哪个配置文件定义关联关系cascade属性表示关联对象的持久化该属性也要设置在主体中作用就是当主控方执行操作时关联对象(被动方)是否同步执行同一操作cascade的值all:表示所有情况下都进行级联操作none:所有情况下都不进行级联操作save-update:在执行save-update时进行级联操作delete:在执行delete时进行级联操作注意使用cascade自動持久化時會先檢查被關聯物件的id屬性未被持久化的物件之id屬性是由unsaved-value決定預設是null如果您使用long這樣的原生型態(primitive type)時則必須自行指定預設值例如如果您不想額外設定unsaved-value資訊則可以將long改為Long這可以符合預設的unsaved-value為null的設定 二、一对多进行关联(一间宿舍对应多个学生)---宿舍是主体学生是附体关联关系在主体宿舍中设置,由于要在宿舍类中设置学生类一个宿舍包含多个学生所以在宿舍类中要用Set类来进行设置用set类(private Set users new HashSet();)来存储多个学生类在映射宿舍类(Room)中要包含这个节点用来与user相关联例如name:表示属性table:表示关联的表名key:表示通过什么字段进行关联:表示关联类。这里也可以使用cascade属性。三、在表关联的设计中不论是一对多还是多对一都要将关联字段设置在多的那一方。例如user表格和room表格要将关联字段room_id设置在user表格中。四、一对一进行关联(一个人只有一个房间一个房间也只有一个人)。可以通过中方式进行关联(1)、通过外键进行关联在多对一的例子中就是通过外键进行关联的.在user-room的设置中(user.hbm.xml):columnROOM_IDclassonlyfun.caterpillar.Roomcascadealluniquetrue/其中unique表示限制一個User有一獨有的 Room这只是单向的说明一个user只有一个room.在room-user的设置中(room.hbm.xml):classonlyfun.caterpillar.Userproperty-refroom/这样就完成了双向的一对一关联property-ref告诉hibernate,查询出user并将其参考至room。(2)、通过主键进行关联限制兩個資料表的主鍵使用相同的值如此一個User與Room就是一對一關係user.hbm.xml:classonlyfun.caterpillar.Roomcascadeall/room.hbm.xml:classonlyfun.caterpillar.Userconstrainedtrue/使用constrainedtrue告訴Hibernate參考至User的主鍵五、双向关联就是将一和二结合起来如果將關聯的維護交給User的話會比較容易因為每個User都對應至一個Room在儲存時並用像Room一樣必須對Set中的每個物件作檢查為了將關聯的維護交給User我們可以在Room.hbm.xml中的修改加上inversetrue表示將關聯的維護「反過來」交給User作例如 在設立雙向關聯時關聯由多對一中「多」的哪一方維護會比由「一」的哪一方維護來的方便在Hibernate可以藉由inverse來設定不設定inverse基本上也可以運行但是效能會較差