同时使用JPA和JDBC

同时使用JPA和JDBC,jpa,jdbc,transactions,Jpa,Jdbc,Transactions,在我的项目中,我们正在将一个旧的J2EE应用程序升级到JavaEE6。 由于业务逻辑相当复杂,我们希望尽可能多地保留EJB+DAO代码。旧代码使用普通JDBC进行数据库持久化 但在我们新的/升级的应用程序中,我们计划使用JPA。 我们希望对数据库的所有读取操作使用JPA,对写入操作(插入/更新/删除)使用JDBC。在同一笔交易中是否可以这样做 例如: 获取实体经理引用,并使用实体经理查找(或命名查询)从数据库(员工实体)读取员工记录 将实体实例转换为POJO 更新POJO 在POJO上执行一些

在我的项目中,我们正在将一个旧的J2EE应用程序升级到JavaEE6。 由于业务逻辑相当复杂,我们希望尽可能多地保留EJB+DAO代码。旧代码使用普通JDBC进行数据库持久化

但在我们新的/升级的应用程序中,我们计划使用JPA。 我们希望对数据库的所有读取操作使用JPA,对写入操作(插入/更新/删除)使用JDBC。在同一笔交易中是否可以这样做

例如:

  • 获取实体经理引用,并使用实体经理查找(或命名查询)从数据库(员工实体)读取员工记录
  • 将实体实例转换为POJO
  • 更新POJO
  • 在POJO上执行一些业务逻辑(按原样重用旧代码)
  • 创建JDBC连接并使用准备好的语句更新数据库中的员工记录(按原样重用旧代码)
问题:

  • 如果我打开两个单独的数据库连接——一个来自JPA,另一个来自JDBC,它是否仍在同一个事务中(因为AppServer管理JTA事务)
  • 这种方法的潜在问题是什么
  • 因为我是通过JDBC更新数据库的,所以持久性上下文中的实体将不会与数据库同步。在这种情况下如何处理缓存
  • 我查看了以下相关线程,但我想了解更多细节


    JPA构建在JDBC之上;你总是把它们一起使用。有些JPA提供商甚至提供对JPA使用的连接的访问,所以你可以添加ops,然后将其交还给JPA。