0

我有一个怀疑,我希望有人能给我一些光明。Normaly 我使用 JSF 和 EJB/JPA 来做我的项目,所以,当我需要从数据库中获取一些过滤的数据时,我有两种方法可以做到:

  • 将查询的参数发送到 sql 存储过程,进行一些查询并检索结果。

    或者

  • 获取所有数据的列表,并根据某些标准创建一些函数来接收实体列表并检索过滤列表。

就像是:

//on managed bean
...
List<Person> listPersons = personFacade.findAll();

return filterByName(filterByAge(filterBySomething(listPersons )));

对我来说,第二种选择更容易做到,但我不确定这是否是最好的方法。

4

1 回答 1

1

通常,您使用 Java 持久性查询语言定义“过滤器”并让 JPA 容器完成它的工作......

http://docs.oracle.com/javaee/6/tutorial/doc/bnbtg.html

JPQL 被转换为 SQL,因此数据库正在执行工作,并且只有过滤的实体 bean 被返回到应用程序的 EJB 层。

相反,如果您稍后过滤它们,则必须首先将整个数据库表加载到内存中。因此,将为每条记录创建一个实体 bean,但很快就会将其丢弃,因为它已从您的列表中过滤出来。

于 2013-09-23T13:07:03.707 回答