我正在寻找创建一个示例项目,同时学习Guice,它使用JDBC来读/写SQL数据库.然而,经过多年的使用Spring并让它抽象出连接处理和事务,我正在努力从概念上运用它.
我想要一个启动和停止事务的服务,并调用大量的存储库,这些存储库重用相同的连接并参与同一个事务.我的问题是:
下面的代码显示了我将如何在Spring中执行此操作.注入每个存储库的JdbcOperations可以访问与活动事务关联的连接.
我无法找到许多涵盖此内容的教程,除了显示为事务创建拦截器的教程之外.
我很高兴继续使用Spring,因为它在我的项目中工作得非常好,但我想知道如何在纯Guice和JBBC中做到这一点(没有JPA/Hibernate/Warp/Reusing Spring)
@Service
public class MyService implements MyInterface {
@Autowired
private RepositoryA repositoryA;
@Autowired
private RepositoryB repositoryB;
@Autowired
private RepositoryC repositoryC;
@Override
@Transactional
public void doSomeWork() {
this.repositoryA.someInsert();
this.repositoryB.someUpdate();
this.repositoryC.someSelect();
}
}
@Repository
public class MyRepositoryA implements RepositoryA {
@Autowired
private JdbcOperations jdbcOperations;
@Override
public void someInsert() {
//use jdbcOperations to perform an insert
}
}
@Repository
public class MyRepositoryB implements RepositoryB {
@Autowired
private JdbcOperations jdbcOperations;
@Override
public void someUpdate() {
//use …
Run Code Online (Sandbox Code Playgroud) 我们最近开始使用功能分支来处理我们所处理的每个故事.这些是尽可能独立的,然后我们的项目经理决定哪些故事将构成一个版本.这意味着我们确实知道故事最初投入生产的确切顺序.
在Flyway有一个标准的处理方法吗?我已经阅读了FAQ,它讨论了对生产数据库的更改是如何线性的,这是正确的.但是我不确定团队成员如何决定在他们的功能分支工作时为他们的迁移提供哪些版本号.我们还需要在发布之前合并到集成分支和master时手动重命名迁移文件.
我试图生成一个True和False值的矩阵,它显示给定数量的选择的所有排列.因此,对于5种选择,您将获得以下输出.
F F F F F
T F F F F
T T F F F
T T T F F
...
F T F F F
...
Run Code Online (Sandbox Code Playgroud)
我一直在研究使用itertool的排列和组合,但是这些都是在位置而不是值上导致重复.
我确定这个问题有一个标准算法,但我很难找到它的名字.
我正在根据动态值创建文件名,例如公司名称和forename/surname.
然后,我想在尝试创建文件之前验证文件名是否有效.这是检查它不包含任何非法字符,如果他们这样做,则替换它们.
我当然可以使用正则表达式,但是想知道是否有像commons-lang或commons-io这样的现有方法呢?
我正在使用Git cherry,并希望看到它找到的提交的更多细节.首先,我跑
git cherry
-- read the output
git show sha-1
Run Code Online (Sandbox Code Playgroud)
有没有办法看到cherry的所有结果的提交/日志/差异,并通过它们翻页?我已经尝试将git cherry的结果用于各种各样的事情,但似乎无法找到一个有效的.
我正在寻找一种Google Collections方法,该方法返回一系列不返回null的供应商的第一个结果.
我正在寻找使用Iterables.find(),但在我的Predicate中,我必须调用我的供应商将结果与null进行比较,然后在find方法返回供应商后再次调用它.