JPA & JDBC 可以在 DAO 层共存吗?

Posted

技术标签:

【中文标题】JPA & JDBC 可以在 DAO 层共存吗?【英文标题】:JPA & JDBC can coexist in DAO layer? 【发布时间】:2013-09-19 06:40:41 【问题描述】:

在数据访问层同时使用 JDBC (JdbcTemplate) 和 JPA (EntityManager) 有什么问题吗?

我打算使用 JDBC 来访问存储过程/例程。 这些存储过程将通过连接多个表(未注册为 JPA 实体)返回多个游标。

这些 JDBC 操作是纯只读的。

我没有在给定 here 的相同事务中组合 JPA 和 JDBC 操作

【问题讨论】:

【参考方案1】:

对我来说没问题。为工作使用正确的工具。例如,如果我想做一些数据跨越多个不同实体的报表查询,或者想要使用一些 JPA 不支持或难以实现的强大数据库功能(例如窗口函数、公用表表达式),我宁愿使用 JDBC 直接发出原生 SQL 来完成工作。

架构CQRS 也使用了这种思想,它有两种不同的独立模型来更新信息(命令操作)和读取信息(查询操作)。例如,JPA 可用于命令操作,而原生 JDBC 用于查询动作。

【讨论】:

以上是关于JPA & JDBC 可以在 DAO 层共存吗?的主要内容,如果未能解决你的问题,请参考以下文章

jpa概念回顾

Spring 对 DAO 的支持

Spring整合DAO与Hibernate

配置数据源和配置jpa的yml文件

JPA的泛型DAO设计及使用

JPA & Criteria API - 仅选择特定列