Java 在JPA中使用本机函数返回视图

Java 在JPA中使用本机函数返回视图,java,hibernate,postgresql,jpa,Java,Hibernate,Postgresql,Jpa,我们正在考虑在数据库(Postgres)和JPA(Hibernate/JBoss 7.1.1)之间创建一个接口 我们将定义要调用的数据库函数和要返回的视图,它们决定了与数据库的接口。基本上,JPA代码将调用存储的PostgreSQL函数,并返回映射到实体的视图 该接口允许在数据库和JPA代码之间进行干净的模块化。然而,它似乎失去了JPA的好处(例如,我们必须定义本机查询,以便不能使用Hibernate缓存) 有没有人对这是否是一个好方法有什么建议,或者对这种设置有什么经验?这取决于您拥有的用例以

我们正在考虑在数据库(Postgres)和JPA(Hibernate/JBoss 7.1.1)之间创建一个接口

我们将定义要调用的数据库函数和要返回的视图,它们决定了与数据库的接口。基本上,JPA代码将调用存储的PostgreSQL函数,并返回映射到实体的视图

该接口允许在数据库和JPA代码之间进行干净的模块化。然而,它似乎失去了JPA的好处(例如,我们必须定义本机查询,以便不能使用Hibernate缓存)


有没有人对这是否是一个好方法有什么建议,或者对这种设置有什么经验?

这取决于您拥有的用例以及您是否必须使用现有数据库代码这一事实

如果您有机会选择,那么在没有必要的情况下永远不要混合业务逻辑-因此我的建议是尽可能使用JPA实体和查询,并在java应用程序中使用所有逻辑,仅在您需要或受益的地方使用纯SQL或PL/pgSQL,例如,对于报告中的海量数据,或当您需要特定于数据库的功能时