obe*_*ger 5 java dao hibernate jpa guice
我目前正在开发一个利用Guice/JPA/Hibernate从我的数据库中获取信息的应用程序.
我在这里阅读了有关使用JPA和EntityManagars的Guice文档:http://code.google.com/p/google-guice/wiki/JPA,
但我很难理解何时应该制作我的DAO实现单身人士.
我看了这个问题,它说关于Spring的使用DAO的对S/O:
为每个请求实例化DAO都会很疯狂.
对于除Spring以外的DI容器,这会延续吗?如果我将DAO Provider注入我的Servlet并在需要时调用,DAO服务实现是否应该是Singleton?
这是我的一个DAO的基本轮廓:
public DAOImpl implements DAOService { <-- SHOULD THIS BE ANNOTATED @Singleton?
@Inject
private EntityManager em;
// OR
// @Inject
// private Provider<EntityManager> emProvider - If it's a singleton.
@Inject
DAOImpl(OtherServices os) {
this.otherServices = os;
}
@Transactional
public MyPersistedObject getPersistedObject(long id) {
MyPersistedObject mpo = em.find(MyPersistedObject.class, id);
return mpo;
}
}
Run Code Online (Sandbox Code Playgroud)
它是如何被称为:
@Singleton
public MyServlet(HttpRequest req, HttpRequest res)
extends ServletInterfaceOfTheDay {
private final daoService; // If Singleton
// OR
// private final Provider<DAOService>; If Instanced DAO
@Inject
MyServlet(DAOService dao) {
this.daoService = dao;
}
// Gather Information from request here...
MyPersistedObject mpo = daoService.getPersistedObject(requestIdInfo);
// OR daoService.get().getPersistedObject(requestIdInfo);
// Process Response Info here....
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
| 归档时间: |
|
| 查看次数: |
2144 次 |
| 最近记录: |