久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JPA總結(jié)

 jackeyqing 2018-12-08
一對(duì)一(@OneToOne)

· 單向關(guān)聯(lián)
# 注釋@OneToOne定義如下
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface OneToOne {
    Class targetEntity() default void.class;
    CascadeType[] cascade() default {};
    FetchType fetch() default EAGER;
    boolean optional() default true;
    String mappedBy() default "";
}
# targetEntity屬性表示默認(rèn)關(guān)聯(lián)的實(shí)體類型,默認(rèn)為當(dāng)前標(biāo)注的實(shí)體類
#cascade屬性表示與此實(shí)體一對(duì)一關(guān)聯(lián)的實(shí)體的聯(lián)級(jí)樣式類型,。聯(lián)級(jí)樣式上當(dāng)對(duì)實(shí)體進(jìn)行操作時(shí)的策略,。
     說(shuō)明:在定義關(guān)系時(shí)經(jīng)常會(huì)涉及是否定義Cascade(級(jí)聯(lián)處理)屬性,,擔(dān)心造成負(fù)面影響.
        ·不定義,則對(duì)關(guān)系表不會(huì)產(chǎn)生任何影響
        ·CascadeType.PERSIST (級(jí)聯(lián)新建)
        ·CascadeType.REMOVE (級(jí)聯(lián)刪除)
        ·CascadeType.REFRESH (級(jí)聯(lián)刷新)
        ·CascadeType.MERGE (級(jí)聯(lián)更新)中選擇一個(gè)或多個(gè),。
        ·還有一個(gè)選擇是使用CascadeType.ALL ,,表示選擇全部四項(xiàng)
#fetch屬性是該實(shí)體的加載方式,有兩種:LAZY和EAGER,。
#optional屬性表示關(guān)聯(lián)的實(shí)體是否能夠存在null值。默認(rèn)為true,表示可以存在null值,。如果為false,,則要同時(shí)配合使用@JoinColumn標(biāo)記。
#mappedBy  屬性用于雙向關(guān)聯(lián)實(shí)體時(shí),,標(biāo)注在不保存關(guān)系的實(shí)體中,。

關(guān)聯(lián)指定列(@JoinColumn)
# @JoinColumn用于注釋表中的字段與@Column不同的是它要保存表與表之間關(guān)系的字段,;
#name屬性是用來(lái)標(biāo)記表中對(duì)應(yīng)的字段的名稱,。如果不設(shè)置name的值,默認(rèn)情況下,,name的取值規(guī)則如下:
    name=關(guān)聯(lián)的表的名稱 + "_" + 關(guān)聯(lián)表主鍵的字段名
# 默認(rèn)情況下,,關(guān)聯(lián)的實(shí)體的主鍵一般用來(lái)做外鍵的。如果不想用主鍵作為外鍵,,則需要設(shè)置referencedColumnName屬性,,如:
    @JoinColumn(name="address_id", referencedColumnName="ref_id")
# @JoinColumn可以與@OneToOne、@ManyToOne或@ManyToMany標(biāo)記同時(shí)使用,。

一對(duì)一單向關(guān)聯(lián)示例:
·客戶實(shí)體類CustomerEO:
    @Entity
    @Table(name="customer") //主表
    public class CustomerEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @OneToOne(casade={CascadeTypeType.ALL})
        @JoinColumn(name="address_id")//關(guān)聯(lián)的表為address表,,其主鍵是id

        private AddressEO address;
        ....
    }
·地址薄類AddressEO:
    @Entity
    @Table(name="address")//從表
    public class AddressEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;
        ....//在單項(xiàng)關(guān)聯(lián)中,從表對(duì)應(yīng)的類中不需要引用主表類
    }

·雙向關(guān)聯(lián)(Bidirectional)
如上述示例中,,將AddressEO修改如下
·地址薄類AddressEO:
    @Entity
    @Table(name="address")
    public class AddressEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @OneToOne(mappedBy="address")
        privatre CustomerEO customer;
        ....
    }
即可,。

*以上所有示例及關(guān)系中表結(jié)構(gòu)如下
    TABLE customer(id int, name varcher, address_id int, PRIMARY KEY id)//在customer中多了一個(gè)address_id屬性
    TABLE address(id int, address_name varcher, zipcode varcher, city varcher, PRIMARY KEY id)

· 主鍵關(guān)聯(lián)(@PrimaryKeyJoinColumn)//我無(wú)法形成主鍵關(guān)聯(lián)。
#在關(guān)聯(lián)的兩個(gè)實(shí)體中直接使用@PrimaryKeyJoinColumn注釋,;
# 在上述表結(jié)構(gòu)中需要在customer表中去掉address_id字段,;
示例:
·客戶實(shí)體類CustomerEO:
    @Entity
    @Table(name="customer")
    public class CustomerEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @OneToOne(casade={CascadeTypeType.ALL})
        @PrimaryKeyJoinColumn
        private AddressEO address;
        ....
    }
·地址薄類AddressEO:
    @Entity
    @Table(name="address")
    public class AddressEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @PrimaryKeyJoinColumn
        privatre CustomerEO customer;
        ....
    }

·默認(rèn)關(guān)聯(lián)
如果表中使用了外鍵,則在映射實(shí)體中不需要做其他的設(shè)置,。
    @Entity
    @Table(name="customer")
    public class CustomerEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @OneToOne
        private AddressEO address;
        ....
    }


一對(duì)一映射的步驟:
1. 確定實(shí)體間關(guān)系,;
2. 考慮表結(jié)構(gòu);
3. 考慮實(shí)體關(guān)系的方向性,;
若為雙向關(guān)聯(lián),,則在保存實(shí)體關(guān)系的實(shí)體中,要配合@JoinColumn注釋,;在沒有保存實(shí)體關(guān)系的實(shí)體中,,要用mappedBy屬性明確所關(guān)聯(lián)的實(shí)體。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多