【发布时间】:2013-09-10 14:07:40
【问题描述】:
在一家大公司,我们的团队提供 API 用于访问 Oracle 数据库中的数据。到目前为止,我们使用普通 SQL (JDBC) 来获取/写入数据库中的数据。 所以大多数现有的 API 看起来都是这样的(好吧,并不总是那么愚蠢:-)
public class DummyApi {
private final DataSource datasource;
public DummyApi(javax.sql.DataSource datasource) {
this.datasource = datasource;
}
public void doSomething() throws SQLException {
Connection connection = datasource.getConnection();
PreparedStatement statement = connection.prepareStatement("plain sql query");
statement.execute();
}
}
使用这样的 API 很简单,您的最终应用程序是纯 java SE、spring 还是 javaEE 都没有关系。此外,事务 API 可以与此 API 一起正常工作。我们将它们与 spring TransactionManager(与 TransactionAwareDataSourceProxy 一起)和 CMA-Java EE 应用程序中的 JTA 一起使用。
现在我们评估在新 API 中使用 JPA。我们目前面临的一个大问题是:我们如何提供一个简单的接口,以便最终应用程序不需要了解 JPA?我们如何使用 DataSource 初始化 EntityManager(例如作为构造函数参数提供)?如果在同一个事务中有旧的、普通的 JDBC-API 和新的 JPA-API(在最终应用程序中开始/回滚),我们如何回滚?
感谢您为此事带来一点启示!
【问题讨论】:
标签: spring api jakarta-ee jpa jdbc