Re-bonjour,
Parfait si vous avez pu vérifier qu'Hibernate Search est le
meilleur candidat pour nos besoins.
Concernant le choix entre la mise en place par annotations sur les
entités ou par programmation, je serais plus d'avis à utiliser les
annotations.
En effet, le projet Cantharella est déjà très orienté annotation.
Que ce soit pour Hibernate ou pour Spring, nous avons toujours
essayé de les privilégier et de minimiser au maximum les fichiers
de configuration XML (avec aussi un effort de passer par de la
configuration par programmation lorsque les annotations ne sont
pas possibles). L'utilisation par annotation étant par ailleurs le
mode de fonctionnement par défaut d'Hibernate Search, il serait
dommage de ne pas en bénéficier.
Je comprends bien toutefois l'argument de vouloir centraliser dans
une ou plusieurs classes l'ensemble du code se rapportant à
Hibernate Search pour des raisons de modularité. C'est souvent
l'inconvénient de ces systèmes d'annotations centrés DAO,
cependant en contre partie ils ont l'avantage d'offrir une vision
claire de l'ensemble des contraintes et fonctionnalités liées au
modèle.
Actuellement, les classes DAO comportent déjà des annotations
d'hibernate/JPA (Hibernate Annotation, Hibernate Validation,
javax.persistence) ou même d'autres annotations personnalisées
pour des validations métiers. Le fait de rajouter d'autres
annotations pour préciser les champs à indexer ne me pose donc pas
plus de problème que cela.
Les requêtes pourront par contre être factorisées dans des classes
à part (par exemple, une classe pour chaque entité) dans un
package spécialisé de la couche DAO.
Cette question mérite certainement d'être discutée plus amplement.
Peut-être pourrions-nous aborder ce point à la prochaine réunion ?
Bonne journée,
Adrien
Le 09/11/2012 05:34, Benjamin POUSSIN a écrit :
Bonjour,
Il semble que la solution Hibernate Search conviendrait à notre besoin
pour la recherche.
On peut la mettre en place soit par des annotations sur les entités
soit par programmation.
Je propose de la mettre en place par programmation, pour que tout le
travail soit à un seul endroit (une classe) et ainsi permettre de
facilement la retirer pour mettre une autre solution si besoin ou
mettre à jour la solution si le modèle évolue sans devoir reprendre
chaque classe d'entité une par une.
Est-ce que cette solution convient à tout le monde ?
--
Adrien Cheype
Ingénieur en Systèmes d'Information
Service « Informatique Scientifique et Appui aux Partenaires du
Sud »
Direction du Système d'Information (DSI)
http://www.ird.fr/dsi/
http://www.ird.fr/informatique-scientifique/
INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT
BP A5 - 98848 Nouméa - Nouvelle Calédonie
Tél. +687 260 789