OneToMany三种设置方式详解

/*
 * 三种配置方式:
 * 1. @OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY ,mappedBy="customId")
 * mappedBy属性用于双向关联实体时使用,
 * mappedBy属性:用在双向关联中,把关系的维护权反转 ; 跟hibernate XML映射中的property-ref一样。
 *
 * JPA执行步骤:一、插入数据到CUSTOM表,
 * 二、执行getAddresses()获取需要持久化的ADDRESS(ADDRESS必须代码设置外键CUSTID),
 * 三、插入数据到ADDRESS表
 *
 * 2.@OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY )
 * JPA执行步骤: 一、插入数据到CUSTOM表,
 * 二、执行getAddresses()获取需要持久化的ADDRESS(ADDRESS代码不需要设置外键CUSTID),ADDRESS和CUSTOM关系保存在关联表中;
 * 三、插入数据到ADDRESS表
 * 四、插入关联信息到CUSTOM_ADDRESS 表中
 * 另外关联表的字段对应关系也可以手工设置,
 * @JoinTable(name="ref_customer_address",
 * joinColumns={@JoinColumn(name="customer_id",referencedColumnName="custId")},
 * inverseJoinColumns={@JoinColumn(name="address_id",referencedColumnName="addrId")}
 *
 * 3.@OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.LAZY )
 * @JoinColumn(name="customer_id") 对应的是表中的字段,会在最后一步进行该字段的更新
 * 该设置属于单向关联, 该设置需要执行三条SQL操作,不推荐;JPA推荐第一种和第二种做法;
 * JPA执行步骤如下:一、插入数据到CUSTOM表,
 * 二、执行getAddresses()获取需要持久化的ADDRESS(ADDRESS必须代码设置外键CUSTID或者将外键属性设置为可以为空),
 * 三、插入数据到ADDRESS表
 * 四、 然后再UPDATE ADDRESS 设置外键关系customer_id
 *
 * 4.另外多端需要初始化一个空数组
 * private Collection
addresses = new ArrayList
();
 *
 * */

https://code.csdn.net/snippets/148791

你可能感兴趣的:(OneToMany三种设置方式详解)