休眠检索父母/孩子

用户名

因此,当我具有一对多的双向关系时,如何确保根据需要从数据库中获取它们?

例如:

在家长班:

@OneToMany(mappedBy="parent")
List<Child> children;

在儿童班:

@ManyToOne
@JoinColumn(name="Parent_Id")
Parent parent;

我只是不确定如何确保当我有父母时,我可以得到它的孩子的清单,反之亦然。不确定Hibernate是如何处理的。

如果要生孩子,我的第一个直觉将是:

String hql="FROM Parent WHERE id=:id";
Query query = session.createQuery(hql);
query.setInteger("id", id);
Parent p = (Parent)query.uniqueResult();
List<Child>=p.getChildren();

与此相反:

//insert retrieve child code
Parent p = child.getParent();

我的困惑是,我不确定Hibernate在创建时是否真的在与父母/孩子一起填充对象,如果这样,我不确定是否最有效的方法来检索它们。

道格拉斯

关系的每一边都可以配置为渴望或懒惰。如果渴望的话,Hibernate将在加载包含对象的对象后立即加载该对象。如果它是惰性的,则Hibernate将放入一个占位符代理对象,并且该代理对象将在您第一次访问它时自动加载真实对象(前提是会话/事务仍处于打开状态,否则将抛出LazyInitializationException)。无论哪种方式,访问关系的语法都是相同的-p.getChildren()child.getParent()在两种情况下均适用。

哪个选项最有效取决于您的个别用例的细节。特别是,相对于加载包含对象的频率,您需要多久一次的关系(惰性使您跳过不必要的负载),多个关系可能会引用一个对象的频率(取决于实现,急切地可能会检查数据库表) (即使对象已经加载并在内存中),以及在关闭会话后是否需要访问该关系。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将父母与孩子一起休眠

来自分类Dev

休眠两个父母一个孩子映射

来自分类Dev

休眠单向一对多:从孩子那里坚持父母

来自分类Dev

休眠单向一对多:从孩子那里坚持下来的父母

来自分类Dev

Rails 3.2-HABTM仅检索没有孩子的父母

来自分类Dev

查询以从父母和孩子那里检索缺陷

来自分类Dev

休眠:删除父母/所有者,同时保持孩子一对一的关系

来自分类Dev

显示隐形父母的孩子

来自分类Dev

让孩子与父母的点击事件

来自分类Dev

父母对孩子的背景

来自分类Dev

父母/孩子组合框

来自分类Dev

父母对孩子的背景

来自分类Dev

让孩子修改其父母

来自分类Dev

固定父母身后的孩子

来自分类Dev

将孩子抛弃给父母

来自分类Dev

相对父母,绝对孩子

来自分类Dev

如何从孩子向父母的父母发送数据

来自分类Dev

如何使用jQuery使孩子成为父母的父母?

来自分类Dev

在孩子悬停时更改父母-父母背景

来自分类Dev

在SwiftUI中从孩子的孩子调用父母的函数

来自分类Dev

JPA与很多孩子建立父母/孩子关系

来自分类Dev

Caliburn.micro 父母->孩子和孩子->父母互动

来自分类Dev

JPA没有孩子的父母

来自分类Dev

Titlepane的孩子将父母推迟

来自分类Dev

将孩子交给父母好吗?

来自分类Dev

父母被杀时杀死孩子

来自分类Dev

从孩子访问父母的名字范围

来自分类Dev

父母div的身高比孩子高

来自分类Dev

jQuery删除孩子并返回父母