我已经读过,如果可能,您应该使用CrudRepository
或PagingAndSortingRepository
而不是JpaRepository
,这样您就不会将代码与特定于商店的实施相结合,但有没有JpaRepository
是更好的选择?
对于我的应用程序,我们需要使用saveAndFlush()
方法和flush()
方法立即刷新数据库更改,因为我们正在尝试将两个实体合并在一起并且不想运行错误的独特关键条件。
例如:
public class User {
@Id
String userId;
@OneToMany(mappedBy = "user")
private Collection<Address> addresses;
// getter and setter methods
}
public class Address {
@ManyToOne(optional = false)
private User user;
// Other fields
// getter and setter methods
}
public void mergeDuplicateUserAddresses(User user, User duplicateUser) {
String userId = user.getUserId();
List<Address> addresses = duplicateUser.getAddresses()
for (Address address : addresses) {
address.setUser(userId);
addressesRepository.saveAndFlush(address);
}
}
对于这个例子,我看到使用JpaRepository
而不是CrudRepository
,但是有没有其他方法可以减少特定于商店的使用?
答案 0 :(得分:0)
只需使用JpaRepository并对它感到满意。 基础数据源类型的变化实际上是一种罕见的情况,当它发生时,无论如何都需要进行更大的更改。不同的数据源类型实际上需要不同的处理。 我知道经常会发生一些人说你应该从数据源类型中抽象出来,以便你可以轻松地改变它。但不确定他们是否尝试过。
为什么它不起作用的一些论据(如果你需要与某人争论)
故事。更改数据源类型通常比实现不同的接口更麻烦。