JPA——实体关系映射

来源:互联网 发布:ipad 电子相册软件 编辑:程序博客网 时间:2024/06/07 23: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;} 


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






原创粉丝点击