我有两个像这样的jdbi刀:
public interface dao1 {
@Query("insert into table1 ...")
findByid(myBean1);
}
public interface dao2 {
@Query("insert into table2 ...)
save(myBean2;
}
}
我想在一个事务中执行两个道的保存,例如:
dao1.save();
dao2.save();
在Spring中,我使用了@transactional注释。我可以使用dropwizard和jdbi做什么?
您可以在DBI上使用事务回调:
dbi.useTransaction((handle, transactionStatus) -> {
Dao1 dao1 = handle.attach(Dao1.class);
Dao2 dao2 = handle.attach(Dao2.class);
dao1.save();
dao2.save();
});
假设您使用的是JDBI v2. x
SQL对象API概述显示了将两个实例绑定到同一个句柄的可能性。这样,您就可以将保存()
调用作为同一事务的一部分:
// TODO: add try/catch/finally to close things properly
DBI dbi = new DBI("jdbc:h2:mem:test");
Handle h = dbi.open();
h.begin();
Dao1 dao1 = h.attach(Dao1.class);
Dao2 dao2 = h.attach(Dao2.class);
dao1.save(myBean1);
dao2.save(myBean2);
h.commit();
h.close();
如果您使用onDemand(按需)而不是open(打开),并且犹豫是否正确使用try/catch,您可能需要考虑以下事项:
// add some more interfaces
public interface Dao1 extends GetHandle, Transactional<Dao1> {
@Query("insert into table1 ...")
save(myBean1);
}
DBI dbi = new DBI("jdbc:h2:mem:test");
Dao1 dao1 = dbi.onDemand(Dao1.class);
// no try/catch necessary here
dao1.inTransaction(transactional, status) -> {
transactional.save(myBean1);
transactional.withHandle((h) -> h.attach(Dao2.class)
.save(myBean2));
return null; // return is enforced by the interface
});
请通过单元测试再次检查功能。
您可以在JDBI中使用@Transaction。我在这里写过博客。http://manikandan-k.github.io/2015/05/10/Transactions_in_jdbi.html
我一直想利用Guice 但是,我开始遇到 Governator 和 Dropwizard 之间的类路径问题。我不得不在我的pom.xml中排除以下模块: 注意:我正在使用管理程序版本 1.3.3 但是现在我遇到的问题是没有指定基本包,乍一看是NoSuchMethodError,我想这可能是另一个类路径问题: 但是,在我的应用程序中,我使用了他们在dropwizer-guice github页面上显
我有一个Dropwizard应用程序,它使用Dropwizard度量并使用BigTable进行持久化。我已经从我的应用程序向graphite报告了指标,并且也希望报告客户端BigTable指标。我看到现有的类<code>BigtableClientMetrics<code>支持报告客户端指标<还提供了code>DropwizardMetricRegistry,它包装了DropWidger并创建了类
你好,我正在尝试使用dropwizard框架创建一个应用程序。我有DAO类impl,它需要一个连接管理器实例的句柄,然后用于获取数据库连接。我有一个多租户数据库应用程序。这个连接管理器将是一个自定义实现。 该应用程序使用hikari cp作为连接池和mysql数据库。我想使用dropwizard托管对象功能初始化数据源和连接池。一旦数据源被初始化,我想使用guice绑定在每个dao类中注入连接管理
我正在使用Dropwizard JDBI框架开发一个Web服务。 现在,我想使用“用户指定的参数”,而不是在yaml文件中具有数据库配置,我的意思是,数据库配置将通过endpointURL提供。 通过dropwizard jdbi可以定制信用吗 如果是,在引用此内容时,我应该考虑在代码中进行哪些更改?- http://dropwizard.readthedocs.org/en/latest/man
有人能解释一下我如何在cloud Foundry上部署我的下拉向导应用程序吗?目前我能够部署war文件。但我不知道如何部署下拉向导jar文件? 这是我的主要方法 原木
我正在使用Guice和Dropwizard开发一个应用程序,在其中我们创建了不同的包,如Guice包、migrations包等,并将它们添加到initialize()方法中的bootstrap中。 注意:我知道另一种方法,您可以在run()方法中创建Module类的对象,用于创建注入器(配置和环境对象在MyModule类的构造函数中作为参数传递)。但这需要我在run()方法中注册所有托管对象和所有