【发布时间】:2012-06-15 16:22:42
【问题描述】:
我想知道在数据库中存储大型对象树的最佳方法是什么。 到目前为止,我有以下内容:
@Entity
class Element1 {
@OneToMany(fetch=FetchType.LAZY)
Collection<Element2> elements;
....
}
获取类型设置为 LAZY,因为 Element2 并不总是需要并且可能非常庞大(其他元素的集合的集合)。
问题是当我从 servlet 检索 Element2 类型的元素时(会话已关闭),我(当然)得到一个惰性异常。第一个解决方案是在查询中急切地获取元素集合,但我怎么知道什么时候做呢?我必须创建方法吗:
Element1 get(Integer Id);
Element1 getEager(Integer Id);
我想知道是否可以从 Element1 中删除字段元素并“反转”映射:
class Element2 {
@ManyToOne
Element1 owner;
.....
}
然后有两种方法:
Element1 get(Integer Id);
Collection<Element2> getElements(Element1 owner);
做这些事情的最好方法是什么?
谢谢!!
【问题讨论】:
标签: java hibernate jakarta-ee jpa ejb