使用EJB的/ JPA过滤函数而不是SQL选择

时间:2013-09-23 13:03:02

标签: java jpa ejb

我有一个怀疑,我跳了一个人可以给我一些亮光。 Normaly我使用JSF和EJB / JPA做我的项目,因此,当ai需要从数据库中获取一些数据时,我有两种方法可以做到:

  • 将查询的参数发送到sql存储过程,查询并重新获取结果。

  • 根据某些标准,获取所有数据的列表,并创建一些功能,以便返回实体列表中的最终反向过滤列表。

类似的东西:

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

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

对于我来说,通过第二种选择更容易实现,但我不确定这是否是最好的方法。

1 个答案:

答案 0 :(得分:1)

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

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

JPQL转换为SQL,因此数据库正在开展工作,只有过滤后的实体bean才会返回到应用程序的EJB层。

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