欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JPA——实体关系映射

程序员文章站 2022-04-23 11:57:39
...


单向关联:


Cascade:属性表示与此实体一对一关联的实体的联级样式类型。

CascadeType.PERSIST (级联新建)

CascadeType.REMOVE (级联删除)

CascadeType.REFRESH (级联刷新)

CascadeType.MERGE (级联更新)中选择一个或多个

CascadeType.ALL  表示选择上面全部四项

说明:在定义关系时经常会涉及是否定义Cascade(级联处理)属性,担心造成负面影响

Fetch:属性是该实体的加载方式,有两种:LAZY和EAGER

FetchType.EAGER:这将要求持续性提供程序运行时必须迫切获取数据

FetchType.LAZY:这将提示持续性提供程序在首次访问数据(如果可以)时应不急于获取数据

mappedBy:属性用于双向关联实体时,标注在不保存关系的实体中

@JoinColumn:用于注释表中的字段,与@Column不同的是它要保存表与表之间关系的字段;


一对一单向关联示例:


客户实体类Customer

@Entity
@Table(name="customer")
    public class CustomerEO implement Serializable{
        @Id
        private int id;

        @OneToOne(casade={CascadeTypeType.ALL})
        @JoinColumn(name="address_id"insertable = false, updatable = false,referencedColumnName="id")
        private AddressEO address;
        
}


地址薄类Address


 @Entity
    @Table(name="address")
    public class AddressEO implement Serializable{
        @Id
        private int id;
        ....
    } 


一对一双向关联示例



客户实体类Customer

@Entity
    @Table(name="customer")
    public class CustomerEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;

        @Column(name = "address_id")
        private String addressId;
}

地址薄类Address


 @Entity
 @Table(name="address")
    public class AddressEO implement Serializable{
        @Id
        @GeneratedValue(stragegy=GenerationType=AUTO)
        private int id;
       
        @OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="addressId")
        private Custome customer;
} 


持续更新中......................................................................................................................................................................