在没有关系的情况下使用Hibernate / JPA并避免多个数据库调用

时间:2009-12-15 20:21:12

标签: hibernate orm jpa

在我看来,当你在Hibernate / JPA中使用关系时,使用OneToMany之类的关系可以提高读取性能,因为只需要运行一个数据库调用来获取父实体和所有子实体。我想避免使用关系,只是将外键列映射为普通列,因为我的应用程序的性质。

一个问题是,当我真正想要处理关系时,我需要做这样的代码......

ParentEntity pe => someDao.findBySomething("some param"); //db round trip List<ChildEntity
childEntities = someDao.findChildren(pe); //db round trip

似乎有一些方法可以像我想要的那样手动做大事,同时避免额外的往返行程。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果你想避免关系,那么你将失去JPA的显着优势。但是,您仍然可以使用Hibernate支持的Native SQL执行您想要的操作。

答案 1 :(得分:2)

您也可以自由地使用@NamedQueries和HQL / JPA-QL而不是映射。写起来会容易些。例如:

childEntities = someDao.findByQuery("Child.findChildrenOfParent", parentId);

Parent.findChildren

的位置
SELECT c FROM Child c WHERE c.parentId=:parentId