<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風(fēng)起,扶搖直上九萬(wàn)里

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    friends

    link

    最新評(píng)論

    EJB3.0之映射(轉(zhuǎn))

    一對(duì)一映射

    雙向一對(duì)一關(guān)系需要在關(guān)系維護(hù)端(owner side)的one2one Annotition定義mappedBy屬性。建表時(shí)在關(guān)系被維護(hù)端(inverse side)建立外鍵列指向關(guān)系維護(hù)端的主鍵列。

    假設(shè)Country 和 Capital 是雙向一對(duì)一的關(guān)系,具體元數(shù)據(jù)聲明如下:

    				
    public class Country {
    	@OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "country")
    	private Capital capital;
    }
    
    public class Capital {
    	@OneToOne(optional = false, cascade = CascadeType.ALL)
    	@JoinColumn(name = "COUNTRY_ID", referencedColumnName = "id")
    	private Country country;
                    
    			

    代碼中元數(shù)據(jù)的說(shuō)明:

    元數(shù)據(jù)描述:

    @OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "country")

    optional聲明關(guān)系是否是必須存在的,即是否允許其中一端為null。

    cascade聲明級(jí)聯(lián)操作。

    @JoinColumn(name = "COUNTRY_ID", referencedColumnName = "id")

    name聲明外鍵列的名字,referencedColumnName聲明外鍵指向列的列名。

    一對(duì)多映射

    雙向一對(duì)多關(guān)系,一是關(guān)系維護(hù)端(owner side),多是關(guān)系被維護(hù)端(inverse side)。 建表時(shí)在關(guān)系被維護(hù)端建立外鍵列指向關(guān)系維護(hù)端的主鍵列。

    假設(shè)Father 和 Child 是雙向一對(duì)多的關(guān)系,具體元數(shù)據(jù)聲明如下:

    				
    public class Father {
    	@OneToMany(targetEntity = Child.class, cascade = CascadeType.ALL, mappedBy = "father")
    	public List<Child> getChildren() {
    		return children;
    	}
    }
    
    public class Child {
    	@ManyToOne
    	@JoinColumn(name = "FATHER_ID", referencedColumnName = "id")
    	public Father getFather() {
    		return father;
    	}
    }
    
                    
    			

    代碼中元數(shù)據(jù)的說(shuō)明:

    元數(shù)據(jù)描述:

    @OneToMany(targetEntity = Child.class, cascade = CascadeType.ALL, mappedBy = "father")

    targetEntity = Child.class表明關(guān)系另一端的實(shí)體類(lèi)型

    cascade聲明級(jí)聯(lián)操作。

    mappedBy聲明關(guān)系維護(hù)端的字段(field)名。

    @ManyToOne

    @JoinColumn(name = "FATHER_ID", referencedColumnName = "id")

    name聲明外鍵列的名字,referencedColumnName聲明外鍵指向列的列名。

    多對(duì)多映射

    多對(duì)多映射采取中間表連接的映射策略,建立的中間表將分別引入兩邊的主鍵作為外鍵。

    EJB3對(duì)于中間表的元數(shù)據(jù)提供了可配置的方式,用戶可以自定義中間表的表名,列名。

    假設(shè)Teacher 和 Student是多對(duì)多的關(guān)系,具體元數(shù)據(jù)聲明如下:

    				
    pubic class Teacher{
    	@ManyToMany(targetEntity = Student.class, cascade = CascadeType.PERSIST)
    	@JoinTable(table = @Table(name = "M2M_TEACHER_STUDENT"),
            joinColumns = @JoinColumn(name = "TEACHER_ID", referencedColumnName = "ID"),
            inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID"))
    	public List<Student> getStudents() {return students;}
    					
    }
    public class Student{
    	@ManyToMany(targetEntity = Teacher.class, mappedBy = "students")
    	public List<Teacher> getTeachers() {
    		return teachers;
    	}
    }
    			
    			

    代碼中元數(shù)據(jù)的說(shuō)明:

    元數(shù)據(jù)描述:

    @ManyToMany(targetEntity = Student.class, cascade = CascadeType.PERSIST)

    targetEntity = Student.class表明關(guān)系另一端的實(shí)體類(lèi)型。cascade聲明級(jí)聯(lián)操作。

    @JoinTable(table = @Table(name = "M2M_TEACHER_STUDENT"),

    joinColumns = @JoinColumn(name = "TEACHER_ID", referencedColumnName = "ID"),

    inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID"))

    JoinTable配置中間表信息,它由3個(gè)部分組成:

    1) table = @Table(name = "M2M_TEACHER_STUDENT") ,聲明中間表的名字

    2) joinColumns ,定義中間表與關(guān)系維護(hù)端的外鍵關(guān)系。

    3) inverseJoinColumns,定義中間表與inverse端的外鍵關(guān)系.

    Inheritance strategy

    EJB3規(guī)定了三種基本的繼承映射策略:

    .每個(gè)類(lèi)分層結(jié)構(gòu)一張表(table per class hierarchy)

    .每個(gè)子類(lèi)一張表(table per subclass)

    .每個(gè)具體類(lèi)一張表(table per concrete class)

    在我們提供的Alpha版本中僅支持第一種映射策略,即每個(gè)類(lèi)層次一個(gè)表。我們將在下一個(gè)版本中提供每個(gè)具體類(lèi)一張表的支持, 考慮到性能,這兩個(gè)映射策略也是推薦的映射策略.

    每個(gè)類(lèi)分層結(jié)構(gòu)一張表(Table per class hierarchy)

    假設(shè)有這么一個(gè)繼承類(lèi)層次:Employee,兩個(gè)子類(lèi)FullTimeEmployee,PartTimeEmployee 源代碼如下所示:
    				
    @Entity
    @Table( name="inheritance_Employee" )
    @Inheritance(strategy=InheritanceType.SINGLE_TABLE,
    		discriminatorType=DiscriminatorType.STRING,
    		discriminatorValue="employee")
    public class Employee {...}
    					
    @Entity
    @Inheritance(discriminatorValue="fullTimeEmp")
    public class FullTimeEmployee extends Employee {...}
    
    @Entity
    @Inheritance(discriminatorValue="partTimeEmp")
    public class PartTimeEmployee extends Employee {...}
                    
    			

    代碼中元數(shù)據(jù)的說(shuō)明:

    基類(lèi)中元數(shù)據(jù)描述:

    @Inheritance(strategy=InheritanceType.SINGLE_TABLE,

    discriminatorType=DiscriminatorType.STRING,discriminatorValue="employee")

    strategy=InheritanceType.SINGLE_TABLE表示繼承映射采用第一種映射策略。

    discriminatorType=DiscriminatorType.STRING表示繼承層次中類(lèi)型識(shí)別列類(lèi)型為String.

    discriminatorValue="employee" 表示此類(lèi)對(duì)應(yīng)的類(lèi)型識(shí)別碼為employee.

    posted on 2006-07-03 00:52 liaojiyong 閱讀(734) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): EJB

    主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃不卡| 亚洲精品二三区伊人久久| 久久亚洲精品无码观看不卡| 久久国产成人亚洲精品影院| 亚洲成年轻人电影网站www| 亚洲成AV人片在线观看| 亚洲伊人久久大香线蕉在观 | 好爽…又高潮了毛片免费看| 在线精品免费视频| 亚洲情XO亚洲色XO无码| 亚洲中文无码a∨在线观看| 免费精品视频在线| 中文字幕免费在线观看| 国产亚洲精品a在线观看| 亚洲国产av高清无码| 国产免费伦精品一区二区三区| 曰批全过程免费视频播放网站| 亚洲 自拍 另类小说综合图区| 亚洲成A人片在线观看无码不卡 | 亚洲av无码不卡私人影院| 亚洲色图.com| 人妻免费一区二区三区最新| 四虎免费大片aⅴ入口| 亚洲乱亚洲乱淫久久| 久久久WWW成人免费精品| 国产大片线上免费看| 亚洲福利视频一区二区三区| 中文字幕在线视频免费观看| 全部免费a级毛片| 亚洲av纯肉无码精品动漫| 一本无码人妻在中文字幕免费| 亚洲精品乱码久久久久久| 成年免费大片黄在线观看com| 女性自慰aⅴ片高清免费| 亚洲人成人网站18禁| 免费做爰猛烈吃奶摸视频在线观看 | 亚洲国产精品无码久久青草 | 亚洲视频精品在线观看| 性无码免费一区二区三区在线| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 人成午夜免费大片在线观看|