在我的项目中,我们正在将旧的J2EE应用程序升级到Java EE 6。
由于业务逻辑非常复杂,我们希望尽可能保留EJB + DAO代码。旧代码使用普通JDBC进行数据库持久化。
但在我们的新/升级应用程序中,我们计划使用JPA。
我们希望将JPA用于数据库上的所有读取操作,并使用JDBC进行写入(插入/更新/删除)。这可能在同一笔交易中吗?
例如:
- 使用实体管理器查找(或命名查询)获取实体管理器参考并从数据库(员工实体)读取员工记录
- 将实体实例转换为POJO
- 更新POJO
- 在POJO上执行一些业务逻辑(按原样重用旧代码)
- 创建JDBC连接并使用预准备语句更新数据库中的员工记录(按原样重用旧代码)
问题:
- 如果我打开2个与数据库的单独连接 - 一个来自JPA,另一个来自JDBC,它是否仍然在同一个事务中(因为app server管理JTA事务)?
- 这种方法有哪些潜在问题?
- 由于我是通过JDBC更新数据库,因此持久化上下文中的实体将不与数据库同步。在这种情况下如何处理缓存?
醇>
我查看了以下相关主题,但我想更详细地了解。