如何在Dropwizard v1.1.0中使用UnitOfWorkAwareProxyFactory

时间:2017-05-16 11:59:43

标签: dropwizard

我需要在dropwizard中调用资源外的DAO方法。 看手册我不清楚如何使用它。手册说

SessionDao dao = new SessionDao(hibernateBundle.getSessionFactory());
ExampleAuthenticator exampleAuthenticator = new
    UnitOfWorkAwareProxyFactory(hibernateBundle)
           .create(ExampleAuthenticator.class, SessionDao.class, dao);

任何人都可以告诉我使用调用DAO的exampleAuthenticator方法。

谢谢,Kedar

2 个答案:

答案 0 :(得分:0)

每个Dropwizard模块都有一个测试套件。以下是您要寻找的答案:https://github.com/dropwizard/dropwizard/blob/release/1.1.x/dropwizard-hibernate/src/test/java/io/dropwizard/hibernate/UnitOfWorkAwareProxyFactoryTest.java#L121-L151

逻辑是:

  1. DAO对象实例包含对Hibernate SessionFactory的引用;
  2. 访问数据库的方法调用sessionFactory.getCurrentSession()。示例代码正在执行本机查询,如果从DB返回至少一个结果行,则返回true;
  3. OAuthAuthenticator实例包含对DAO实例的引用,并调用DAO的相应方法。
  4. 测试用例在这里:https://github.com/dropwizard/dropwizard/blob/release/1.1.x/dropwizard-hibernate/src/test/java/io/dropwizard/hibernate/UnitOfWorkAwareProxyFactoryTest.java#L64-L74

答案 1 :(得分:-1)

工作解决方案

function is_on(a, b, c) {
    return Math.abs(distance(a,c) + distance(c,b) - distance(a,b))<0.000001;
}

我们现在可以使用/** initializing proxy dao for authorization */ AuthenticatorDAOProxy authenticatorDAOProxy = new UnitOfWorkAwareProxyFactory(hibernateBundle) .create(AuthenticatorDAOProxy.class, DeviceDAO.class, deviceDAO); 以外的球衣资源

有一点需要注意。authenticatorDAOProxy应该有一个构造函数接受AuthenticatorDAOProxy

现在您的proxyDao看起来像

DeviceDAO