如果我的应用程序需要大量的连接查询,我应该使用ORM吗?

问题描述 投票:1回答:1

我有3个实体。资产(PK asset_id,FK category_id)ii。类别(PK category_id,FK:size_id)iii。大小(PK size_id)

现在每个资产属于一个类别(多对一),每个类别都有一个大小(多对一)在一个典型的ORM中,我会触发一个资产检索查询,然后调用(SELECT * from asset)现在当我调用Asset.getCategory(),它将调用(SELECT * from category)并调用Caegory.getSize()将调用(SE:ECT * from size)

因此,在OOP中进行单个实体检索会产生3个DB调用,就像我在DB调用中编写一个连接查询一样。让我想知道,为什么我们使用ORM。

java database hibernate orm rdbms
1个回答
1
投票

你的假设是错误的。在JPA中,您可以使用“fetch”关键字查询整个对象图,这将基本上从一个查询中获取数据库中的所有数据。所以你会做类似的事情

entityManager.createQuery("select asset from Asset asset join fetch asset.category cat join fetch cat.size size");

这将获得其类别的资产,以及在一个查询中具有其大小的类别。除了3个表非常少之外,通常可以通过基本连接加入更多表而不会出现性能问题。

© www.soinside.com 2019 - 2024. All rights reserved.