2010-06-12 62 views
1

我使用Hibernate Tools从数据库模式生成.hbm.xml映射文件和.java文件。我的问题是,这有什么选择,也可以生成服务类?这些是我实现store(),find(),delete()等...方法的类。我知道C#有很多解决方案来生成几乎所有的东西。我正在寻找相同的,但与Hibernate。有没有?使用Hibernate生成服务层

回答

1

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

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

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

等效Ant Taskhbm2dao

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

2

无法生成服务。

你应该只能用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); 
} 
+0

COOL-我在哪里可以找到一个实现? :) – ianpojman 2012-05-02 20:00:23

+0

你必须创建它。 – duffymo 2012-05-02 20:14:17

0

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

我已经实现了这一点,它运作良好,并已发展到满足我的需求。我延长了加(),删除()等方法,也incude命名查询(findQueryName)和使用泛型的,所以我需要做的声明基本的CRUD的数据访问接口是

public interface SomeObjectDAO extends GenericDAO<SomeObject> { 
    }