Je génère des fichiers de mappage .hbm.xml
et des fichiers .java
à partir du schéma de base de données, avec Outils Hibernate. Ma question est la suivante: existe-t-il une option pour créer des classes de service? Ce sont les classes où j'implémente les méthodes store(), find(), delete(), etc ... Je sais que pour C# il existe de nombreuses solutions pour générer presque tout. Je cherche la même chose, mais avec Hibernate. Y a-t-il?Génération de la couche de service avec Hibernate
Répondre
La génération de «services» n'a pas beaucoup de sens pour moi car les services implémentent généralement une logique métier (que Hibernate ne peut pas générer de manière magique). Maintenant, si vous voulez dire un code d'accès aux données, c'est-à-dire des DAO (exposer et implémenter des méthodes CRUD et des finders), alors le Hibernate Tools peut le faire. C'est le code DAO (.java) option sur la capture du Eclipse plugin ci-dessous:
alt text http://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html/images/codegenexporters.png
Le Ant Task équivalent est hbm2dao
.
Mais personnellement, je n'utilise pas cette fonctionnalité et j'irais duffymo's way.
Aucune option pour générer des services.
Vous devriez pouvoir écrire une seule interface DAO générique et une implémentation avec Hibernate.
Comme ceci:
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);
}
Spring Roo pourrait avoir ce que vous voulez.
Vous pouvez implémenter la couche d'accès aux données simplement en déclarant des interfaces et en les mettant en œuvre à l'aide de proxys JDK, puis en appelant les méthodes de mise en veille prolongée. Les détails sont ici - A simple data access layer using hibernate.
J'ai mis en œuvre ceci et cela fonctionne bien et a grandi pour répondre à mes besoins. J'ai étendu le module complémentaire(), supprimer() etc .. méthodes aussi incude requêtes nommées (findQueryName
) et l'utilisation des médicaments génériques, donc tout ce que je dois faire pour déclarer une interface d'accès aux données de base CRUD est
public interface SomeObjectDAO extends GenericDAO<SomeObject> {
}
COOL- Où puis-je trouver une implémentation? :) – ianpojman
Vous devez créer cela. – duffymo