sha*_*dra 6 java orm hibernate jpa hibernate-mapping
我使用 JPA 2.1 和 Hibernate 作为 JPA 实现,并且我想将关系加载为不可变集合。
让我们以具有子集合的Employer父实体为例employees。
如何指示 JPA 加载不可变employees集合?
您可以使用@Immutable Hibernate 特定注释:
@OneToMany(mappedBy = "employer")
@Immutable
List<Employee> employees = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)另一种选择是在返回集合之前克隆它:
假设你有一个员工列表,你可以像这样映射它:
@OneToMany(mappedBy = "employer")
List<Employee> employees = new ArrayList<>();
public List<Employee> getEmployees() {
return org.apache.commons.lang.SerializationUtils.clone(employees);
}
Run Code Online (Sandbox Code Playgroud)
通过省略setter并且getter只返回支持列表的副本,您可以实现不变性。使用深拷贝克隆(例如 org.apache.commons.lang.SerializationUtils)确保整个实体图被克隆并因此与托管父实体分离。
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |