我在项目中有很多实体,我需要为每个实体创建一个数据访问对象。我认为那些DAO将是无状态会话bean,每个都有一个实体管理器注入其中(我不确定这个,但因为我将在JBoss AS的上下文中使用它们,它看起来很合理。任何建议? )。
是否有任何工具(理想情况下,maven插件)可以扫描我的实体类,处理他们的注释并为我生成这些bean?每个bean都应该公开创建或删除实体的方法,以及作为单独方法的各自实体类的每个命名查询。
更确切地说,我想要这样的内容:
http://community.jboss.org/people/ilya40umov/blog/2011/01/06/genericejb-based-jpa-entitymanager-extension
但每个命名查询使用不同的方法。
我将使用带有Hibernate 4.0的JPA 2.0。提前谢谢!
编辑:愚蠢我,我忘了提到我没有使用弹簧,DAO这个词只是用来说明我想要的......
答案 0 :(得分:4)
Telosys Tools专为此类任务而设计 它从数据库模型生成代码
请参阅https://sites.google.com/site/telosystools/
您可以使用本教程https://sites.google.com/site/telosystutorial/springmvc-jpa-springdatajpa的一部分仅生成JPA部分
您还可以创建自己的模板,以满足您自己的需求(或调整现有模板)
答案 1 :(得分:1)
你可以使用泛型和反射来制作类似的东西
public interface IDao<T> {
public <A extends Serializable> T getElementByID(A x);
public Long getRowsCount();
public List<T> getAll();
public List<T> getAll(String order);
public void saveOrUpdateElement(T x);
public void updateElement(T x);
public void saveElement(T x);
public void deleteElement(T x);
public void setClase(Class<T> clase);
public Class<T> getClase();
public void mergeElement(T x);
public T getFirst();
}
方法public void setClase(Class clase); make all de magic所以如果你需要查询x那么你设置类,例如getAll()的实现将是
public List<T> getAll(){
return session.createQuery("from "+getClase().getSimpleName()).list();
}
答案 2 :(得分:0)