在多模块 Java 应用程序中的 INSERT/UPDATE 之前禁用 SELECT
Posted
技术标签:
【中文标题】在多模块 Java 应用程序中的 INSERT/UPDATE 之前禁用 SELECT【英文标题】:Disable SELECT before INSERT/UPDATE in multi-module java application 【发布时间】:2021-05-30 21:08:06 【问题描述】:我在一个通用模块中定义了一个实体类,如下所示。
@Entity(name="TABLE_NAME")
class TableName
....
现在我有两个模块 module1
和 module2
其中 module1 INSERT
s 行数据和 module2
对数据进行更新。我们正在使用saveEntity()
,它在插入/更新之前进行选择。该表是大表,也需要一些时间来进行插入/更新和占用会话。 @Entity 类作为依赖从模块 1 和模块 2 访问。我的问题是
-
如何在模块 1 中插入之前禁用选择?
如何在模块 2 中在 UPDATE 之前禁用选择?
【问题讨论】:
【参考方案1】:如果您使用的是 Spring-data-jpa,则拥有 JPA 存储库会有所帮助,例如
@Repository public interface TableNameRepository extends JpaRepository<TableName, DataTypeOfIdInTheEntityClass>
然后调用方法
TableNameRepository.save(entityObject)
【讨论】:
我的理解是 save() 将调用 SELECT 以了解它是否是新 ID。然后它将决定是否插入新密钥,否则将进行更新。我在这里看到两次往返。我正在努力避免这种情况。 我正在考虑的一个选项是在实体上实现 Persistable以上是关于在多模块 Java 应用程序中的 INSERT/UPDATE 之前禁用 SELECT的主要内容,如果未能解决你的问题,请参考以下文章
在多模块 maven 项目中的模块之间共享 src/test 类