Hibernate的关联映射--一对多、
生活随笔
收集整理的這篇文章主要介紹了
Hibernate的关联映射--一对多、
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這是我
1 單向一對(duì)多:
實(shí)體類:(課程類)Grade與(學(xué)生類)Student的一對(duì)多關(guān)系
學(xué)生類:
bhm.xml:
<hibernate-mapping><class name="com.zx.model.Student" table="student" catalog="hibernate"><id name="id" type="java.lang.Long"><column name="id" /><generator class="native" /></id><property name="name" type="java.lang.String"><column name="name" length="50" /></property><property name="age" type="java.lang.Integer"><column name="age" /></property><property name="gradeId" type="java.lang.Long"><column name="grade_id" /></property></class> </hibernate-mapping>課程類:
public class Grade implements java.io.Serializable {// Fieldsprivate Long id;private String name; }xml
<hibernate-mapping><class name="com.zx.model.Grade" table="grade" catalog="hibernate"><id name="id" type="java.lang.Long"><column name="id" /><generator class="native" /></id><property name="name" type="java.lang.String"><column name="name" length="50" /></property><!-- 配置與student一對(duì)多的關(guān)系--><set name="students" inverse="true" cascade="delete"> <key column="grade_id" /> <one-to-many class="com.zx.model.Student"/> </set> </class> </hibernate-mapping>測(cè)試findById():
public static void main(String[] args) {GradeDAO gradeDAO = new GradeDAO();Grade grade = new Grade();grade.setId(1L);Grade grade2 = gradeDAO.findById(1L); for (Student stu : grade2.getStudents()) {log.debug(stu.getName());}}關(guān)聯(lián)查詢不管inverse、cascade為何值時(shí),都會(huì)查詢到課程對(duì)應(yīng)得學(xué)生集合。插入時(shí)只插入一張表,不會(huì)級(jí)聯(lián)。
2 雙向關(guān)聯(lián)映射
在兩個(gè)關(guān)聯(lián)實(shí)體中,同時(shí)配置了兩種關(guān)聯(lián)關(guān)系,這是這兩個(gè)實(shí)體間就形成了雙向關(guān)聯(lián)映射,查詢數(shù)據(jù)時(shí)互不影響,但是插入、更新、刪除數(shù)據(jù)就會(huì)產(chǎn)生級(jí)聯(lián)更新的問(wèn)題。一班來(lái)說(shuō)關(guān)系的維護(hù)交給多的一方維護(hù),那么就需要在“一”的一方的配置文件中,加入invers=”true”的設(shè)置。
Student:
Grade:
<hibernate-mapping><class name="com.zx.model.Grade" table="grade" catalog="hibernate">...<!-- 配置與student一對(duì)多的關(guān)系, **維護(hù)關(guān)系交給多的一方維護(hù)** --><set name="students" inverse="true" cascade="all"> <key column="grade_id" /> <one-to-many class="com.zx.model.Student"/> </set> </class> </hibernate-mapping>總結(jié)
以上是生活随笔為你收集整理的Hibernate的关联映射--一对多、的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sqlserver 2005 数据库的差
- 下一篇: 静态工具类注入service的方法