【发布时间】:2010-06-12 17:37:51
【问题描述】:
我使用 Hibernate Tools 从 DB 模式生成 .hbm.xml 映射文件和 .java 文件。我的问题是,还有什么选项可以生成服务类吗?这些是我实现 store()、find()、delete() 等方法的类。
我知道对于 C#,有很多解决方案可以生成几乎所有内容。我正在寻找相同的,但与休眠。有没有?
【问题讨论】:
标签: java eclipse hibernate hibernate-tools
我使用 Hibernate Tools 从 DB 模式生成 .hbm.xml 映射文件和 .java 文件。我的问题是,还有什么选项可以生成服务类吗?这些是我实现 store()、find()、delete() 等方法的类。
我知道对于 C#,有很多解决方案可以生成几乎所有内容。我正在寻找相同的,但与休眠。有没有?
【问题讨论】:
标签: java eclipse hibernate hibernate-tools
没有生成服务的选项。
您应该能够使用 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);
}
【讨论】:
生成“服务”对我来说没有多大意义,因为服务通常会实现业务逻辑(Hibernate 无法神奇地生成)。
现在,如果您的意思是数据访问代码,即 DAO(公开和实现 CRUD 方法和查找器),那么 Hibernate Tools 可以做到这一点。这就是捕获Eclipse plugin 的DAO 代码(.java) 选项,如下所示:
alt text http://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html/images/codegenexporters.png
等效的Ant Task 是hbm2dao。
但我个人不使用这个功能,我会去duffymo's way。
【讨论】:
Spring Roo 可能有你想要的。
【讨论】:
您可以通过声明接口来实现数据访问层,并使用 JDK 代理实现这些接口,然后调用 hibernate 方法。详情在这里 - A simple data access layer using hibernate。
我已经实现了这一点,它运行良好,并且已经满足我的需求。我扩展了 add()、remove() 等方法以包括命名查询 (findQueryName) 和泛型的使用,所以我需要做的就是声明一个基本的 CRUD 数据访问接口是
public interface SomeObjectDAO extends GenericDAO<SomeObject> {
}
【讨论】: