【发布时间】:2022-01-13 13:02:03
【问题描述】:
我有一个用例需要连接到两个不同的数据库(Postgres 和 Oracle)。 Postgres 已经配置了 jpa。我需要再添加一个数据库(Oracle)。在 oracle 数据库中,我需要在运行时选择表进行插入和删除(因为表不固定)。目前我将我的属性文件中的表格作为列表传递
oracle:
deletion:
table:
-
tableName: user
primaryKey: userId
emailField: emailId
deleteTableName: user_delete
-
tableName: customer
primaryKey: customerId
emailField: emailAddress
deleteTableName: customer_delete
我创建了一个 bean,它读取所有这些属性并将它们放在一个列表中
@Bean("oracleTables")
@ConfigurationProperties("oracle.deletion.table")
List<Table> getAllTAbles(){
return new ArrayList<>();
}
我有一个电子邮件地址列表。对于这些表中的每一个,我需要从父表中获取基于 emailAddress 的主键(tableName 中的值)并将数据插入相应的 deleteTable(deleteTableName 中的值)。完成后,我需要根据电子邮件地址从实际表(表名中的值)中删除数据。
我打算遍历我的 bean 中的表列表并执行 fetch、insert 和 delete。
样本sn-p
@Autowired
@Qualifier("oracleTables")
List<Table> tables;
public boolean processDelete(List<String> emails){
for(Table table:tables){
//fetch all the primary keys for given emails from main table(value in tableName)
//insert into corresponding delete table
//delete from main table
}
}
但我的问题是,我应该使用 jdbcTemplate 还是 jpaRepository/hibernate。还有一些实施方面的帮助以及一个小示例/链接。
这个问题的原因是
1)我的表格不是固定的
2)我需要事务管理来回滚以防获取、插入或删除失败。
3)我需要配置两个数据库
【问题讨论】:
标签: postgresql oracle hibernate jpa jdbctemplate