- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可以做到吗?
我只找到了他们创建多个存储库和多个实体类来执行此操作的来源。但是,我找不到任何来源表明您可以让 1 个 Repository 类访问不同的数据库。
基本上,我有一个具有读写方法的 DAO 类。我为其配置了一个 Spring 数据存储库,并且我正在尝试对其进行设置,以便读取类命中副本数据库,而写入类命中主数据库。
到目前为止,我一直在尝试为每个数据库定义两个不同的 SpringDataConfig 类。就像这样:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
basePackages = { "repo" },
entityManagerFactoryRef = "Write",
transactionManagerRef = "JpaTxnManager_Write")
public class RepositoryConfigSpringDataDbWrite {
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
basePackages = { "repo" },
entityManagerFactoryRef = "Read",
transactionManagerRef = "JpaTxnManager_Read")
public class RepositoryConfigSpringDataDbRead {
}
我们将 SpringDataRepository 类称为 EntityRepo。现在,在 DAO 类中,我尝试使用 @Transactional
注释将特定方法指向特定数据库,如下所示:
@Transactional(transactionManager="JpaTxnManager_Read")
public List<Entity> getAllEntitiesById(String id) {
return entityRepo.findById(id);
}
其他一些调用 Write 的方法是:
@Transactional(transactionManager="JpaTxnManager_Write")
public List<Entity> getAllEntitiesById(Entity entity) {
return entityRepo.save(entity);
}
知道这是否可能吗?
最佳答案
您可以创建两个 Bean,通过单独的包扩展单个 Jpa 接口(interface)来执行两种行为,而不是尝试强制使用一个 Bean 来执行两种可能冲突的行为。这确保了即使开发人员忘记了 future Dao 方法中的注释,您的 Dao 中也会明确请求只读或写入存储库。
原始 JPA 存储库:
public interface EntityRepository extends CrudRepository<Entity, Long> { }
将数据库配置重新配置为 repo.readonly 和 repo.write
在 repo.readonly 中:
public interface EntityReadOnlyRepository extends EntityRepository { }
在 repo.write 中:
public interface EntityWriteRepository extends EntityRepository { }
然后,您可以将两个存储库及其各自的配置自动连接到您的服务中。
@Autowired
EntityReadOnlyRepository entityReadOnlyRepository;
@Autowired
EntityWriteRepository entityWriteRepository;
我假设您有只读数据锁以防止写入,但您也可以执行自定义 Impl 行为以在读取接口(interface)中抛出保存调用的异常。
关于java - 配置 Spring Data Repository 类以针对读取/选择方法命中 read_replica_db 并针对写入/插入方法命中 main_db ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59617208/
这个问题已经有答案了: How to setup Hibernate to read/write to different datasources? (5 个回答) 已关闭 3 年前。 这可以做到吗?
我是一名优秀的程序员,十分优秀!