Hibernate Toolsを使用して、DBスキーマから.hbm.xml
マッピングファイルとファイルを生成します。.java
私の質問は、サービスクラスも生成するオプションはありますか?これらは、store()、find()、delete()などのメソッドを実装するクラスです。C#には、ほとんどすべてを生成するための多くのソリューションがあることを私は知っています。同じものを探していますが、Hibernateを使用しています。ありますか?
4 に答える
サービスを生成するオプションはありません。
Hibernateを使用して1つの汎用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メソッドとファインダーの公開と実装)である場合、HibernateToolsはそれを行うことができます。これは、以下に示すEclipseプラグインのキャプチャーのDAOコード(.java)オプションです。
代替テキストhttp://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html/images/codegenexporters.png
同等のAntタスクはhbm2dao
です。
しかし、私は個人的にこの機能を使用せず、duffymoのやり方で行きます。
SpringRooはあなたが望むものを持っているかもしれません。
インターフェイスを宣言し、JDKプロキシを使用してこれらを実装し、Hibernateメソッドを呼び出すだけで、データアクセス層を実装できます。詳細はこちら-Hibernateを使用した単純なデータアクセス層。
私はこれを実装しましたが、うまく機能し、私のニーズを満たすように成長しました。add()、remove()などのメソッドを拡張して、名前付きクエリ(findQueryName
)とGenericsの使用も含めるようにしたので、基本的なCRUDデータアクセスインターフェイスを宣言するために必要なのは
public interface SomeObjectDAO extends GenericDAO<SomeObject> {
}