我有 3 个实体 i。资产(PK 资产_id,FK 类别_id) ii. 类别(PK category_id, FK: size_id) iii. 尺寸(PK size_id)现在每个资产都属于一个类别(多对一)并且每个类别都有一个大小(多对一)我调用 Asset.getCategory(),它会调用 (SELECT * from category) 并且调用 Caegory.getSize() 会调用到 (SE:ECT * from size)因此,OOP 中的单个实体检索进行了 3 个 DB 调用,就像我在 DB 调用上编写的连接查询一样。让我想知道,为什么我们使用 ORM。
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
你的假设是错误的。在 JPA 中,您可以使用“fetch”关键字来查询整个对象图,这基本上可以在一次查询中获取数据库中的所有数据。所以你会做类似的事情
entityManager.createQuery("select asset from Asset asset join fetch asset.category cat join fetch cat.size size");
这将在一个查询中获得带有其类别的资产,以及带有其大小的类别。除了这 3 个表非常少之外,您通常可以使用基本连接连接更多的表,而不会出现性能问题。
添加回答
举报
0/150
提交
取消