在我看来,当你在Hibernate / JPA中使用关系时,使用OneToMany之类的关系可以提高读取性能,因为只需要运行一个数据库调用来获取父实体和所有子实体。我想避免使用关系,只是将外键列映射为普通列,因为我的应用程序的性质。
一个问题是,当我真正想要处理关系时,我需要做这样的代码......
ParentEntity pe => someDao.findBySomething("some param"); //db round trip List<ChildEntity
childEntities = someDao.findChildren(pe); //db round trip
似乎有一些方法可以像我想要的那样手动做大事,同时避免额外的往返行程。有什么想法吗?
答案 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