【问题标题】:Need a code-generation tool for entities' DAO's [closed]需要用于实体 DAO 的代码生成工具 [关闭]
【发布时间】:2011-12-05 09:39:58
【问题描述】:

我在一个项目中有很多实体,我需要为每个实体创建一个数据访问对象。我认为那些 DAO 将是无状态会话 bean,每个都有一个实体管理器注入其中(我不确定这个,但由于我将在 JBoss AS 的上下文中使用它们,它看起来很合理。有什么建议吗? ).
是否有任何工具(最好是 maven 插件)可以扫描我的实体类、处理它们的注释并为我生成这些 bean?每个 bean 都应该公开创建或删除实体的方法,以及将其各自实体类的每个命名查询作为单独的方法。 更准确地说,我想要这篇文章中的内容:
http://community.jboss.org/people/ilya40umov/blog/2011/01/06/genericejb-based-jpa-entitymanager-extension
但对每个命名查询使用不同的方法。 我将使用 JPA 2.0 和 Hibernate 4.0。提前致谢!
编辑:愚蠢的我,我忘了提到我没有使用弹簧,而术语 DAO 只是用来说明我想要什么......

【问题讨论】:

    标签: java jpa maven-2 code-generation


    【解决方案1】:

    Telosys Tools 专为此类任务而设计 它从数据库模型生成代码

    https://sites.google.com/site/telosystools/

    您可以使用本教程的一部分https://sites.google.com/site/telosystutorial/springmvc-jpa-springdatajpa 仅生成 JPA 部分

    您还可以创建自己的模板以满足您自己的需求(或调整现有模板)

    【讨论】:

      【解决方案2】:

      你可以使用泛型和反射来制作类似的东西

      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 case);让一切变魔术,所以如果你需要查询 x 那么你设置类和实现例如 getAll() 将是

      public List<T> getAll(){
           return session.createQuery("from "+getClase().getSimpleName()).list();
      

      }

      【讨论】:

      • 如果涉及到基本的 CRUD 操作,我也会选择通用 DAO 接口和特定实体类型的实现。但是,这并没有解决 OP 提到的自动命名查询发现和方法生成问题。您当然可以在您的 CRUD 接口中有一个通用方法,它采用 namedQuery 名称和某种类型的参数映射,但我怀疑这是您所期望的。
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2011-06-26
        • 2012-01-09
        • 2011-10-08
        • 2012-12-02
        • 2013-11-06
        • 1970-01-01
        • 2015-01-03
        • 2012-01-07
        • 1970-01-01
        相关资源
        最近更新 更多