【问题标题】:Generate service layer with Hibernate使用 Hibernate 生成服务层
【发布时间】:2010-06-12 17:37:51
【问题描述】:

我使用 Hibernate Tools 从 DB 模式生成 .hbm.xml 映射文件和 .java 文件。我的问题是,还有什么选项可以生成服务类吗?这些是我实现 store()、find()、delete() 等方法的类。 我知道对于 C#,有很多解决方案可以生成几乎所有内容。我正在寻找相同的,但与休眠。有没有?

【问题讨论】:

    标签: java eclipse hibernate hibernate-tools


    【解决方案1】:

    没有生成服务的选项。

    您应该能够使用 Hibernate 编写一个通用的 DAO 接口和实现。

    像这样:

    package persistence;
    
    import java.io.Serializable;
    import java.util.List;
    
    public interface GenericDao<T, K extends Serializable>
    {
        T find(K id);
        List<T> find();
        List<T> find(T example);
        List<T> find(String queryName, String [] paramNames, Object [] bindValues);
    
        K save(T instance);
        void update(T instance);
        void delete(T instance);
    }
    

    【讨论】:

    • Cool- 我在哪里可以找到实现? :)
    【解决方案2】:

    生成“服务”对我来说没有多大意义,因为服务通常会实现业务逻辑(Hibernate 无法神奇地生成)。

    现在,如果您的意思是数据访问代码,即 DAO(公开和实现 CRUD 方法和查找器),那么 Hibernate Tools 可以做到这一点。这就是捕获Eclipse pluginDAO 代码(.java) 选项,如下所示:

    alt text http://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html/images/codegenexporters.png

    等效的Ant Taskhbm2dao

    但我个人不使用这个功能,我会去duffymo's way

    【讨论】:

      【解决方案3】:

      Spring Roo 可能有你想要的。

      【讨论】:

        【解决方案4】:

        您可以通过声明接口来实现数据访问层,并使用 JDK 代理实现这些接口,然后调用 hibernate 方法。详情在这里 - A simple data access layer using hibernate

        我已经实现了这一点,它运行良好,并且已经满足我的需求。我扩展了 add()、remove() 等方法以包括命名查询 (findQueryName) 和泛型的使用,所以我需要做的就是声明一个基本的 CRUD 数据访问接口是

           public interface SomeObjectDAO extends GenericDAO<SomeObject> {
           }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-12
          • 2015-11-27
          • 2010-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-02
          • 2011-04-22
          相关资源
          最近更新 更多