48 votes

Modèle d'hibernation printanier quand utiliser et pourquoi?

Salutations, Actuellement, le développement de la petite application de service web lorsque la réponse du service web (à l'aide de CXF + Printemps) le traitement et l'enregistrement de base de données. Pour travailler avec la base de données, je suis en utilisant Hibernate(3.5). La navigation sur certains Hibernate + Ressort exemple sur le web, j'ai souvent peut voir l'utilisation de HibernateTemplate donc je suis un peu confus au sujet de ce moment et je voulais demander:

Utilisez-vous HibernateTemplate dans votre Hibernate3 applications? Quand HibernateTemplate peut rendre votre vie meilleure et en fonction de quels points puis-je décider de faire j'ai besoin de l'utiliser ou pas ?

Merci.

53voto

Sean Patrick Floyd Points 109428

Tous les modèles de printemps (hibernate, jdbc, le repos, la jpa, etc.) ont les mêmes avantages et des inconvénients:

Pro: Ils effectuent des communes routines d'installation pour vous, vous permettre d'ignorer le passe-partout et de se concentrer sur la logique que vous voulez.

Con: vous êtes couplage votre demande fermement le framework spring. Pour cette raison, le Printemps recommande HibernateTemplate plus être utilisé.

Plus précisément, ce HibernateTemplate fait pour vous a été automatiquement d'ouvrir et de fermer des sessions et de valider ou d'annuler les opérations effectuées après votre code exécuté. Cependant, tout cela peut être atteint dans une orientée aspect chemin à l'aide du Printemps Déclarative, la Gestion des Transactions.

Référence:

11voto

Maulik Kayastha Points 81

Permettez-moi de préciser une chose, à savoir que HibernateTemplate de Spring ne sera plus pris en charge, à savoir que les versions d'Hibernate 4+ ne prennent pas en charge HibernateTemplate. Il est donc conseillé d’utiliser la gestion déclarative des transactions comme suggéré par Sean.

5voto

duffymo Points 188155

HibernateTemplate encapsule un certain nombre de choses pour vous faciliter la vie.

C'est votre choix de l'utiliser ou non. D'ailleurs, vous pouvez travailler avec une base de données sans Hibernate. Le matériel JDBC de Spring est très bon. Vous trouverez peut-être plus facile de résoudre votre problème sans avoir à apprendre Hibernate.

1voto

Thomas W Points 7179

Le OpenSessionInViewFilter patron est efficace. Cela ouvre une session Hibernate & lie à votre fil, lors du traitement de chaque demande. OpenSessionInView s'étend également à la Session et loadability pour le rendu de l'Affichage & la couche de la Vue, ce qui diminue le couplage et de la complexité (en permettant que de "juste travail").

Mon philosophies n'ont pas vraiment d'accord avec aspect/ à base déclarative, la gestion des transactions. J'aime faire de grands changement d'état/ du cycle de vie des événements "explicite", puisqu'ils doivent être tout à fait précis-pas faiblement dépendants de multiples cachés et indirecte couches, qui peut ou peut ne pas fonctionner.

Il fournit un point à déboguer.

TX commit est une seule ligne de code, mais c'est le principal que vous voulez de point d'arrêt sur. N'est plus un point de vue syntaxique, que d'un "transactionnelle" déclaration; mais un enfer de beaucoup plus précis.

Franchement je trouve "commandes utilisateur" ou de "demandes", qui sont le lieu approprié pour procéder à une transaction et de contrôle transactionality de, doit être bien structuré, bien identifiés et assez explicite au sein de l'application.

(J'ai eu de la difficulté à obtenir l'aspect de la classe de chargement du travail, de l'essayer quand il est arrivé. Mon évaluation est que, par rapport à bien écrite OO code, l'aspect est limitée à une valeur.)

Astuce: en général je faire une classe helper, pour le rendre vraiment pratique pour se rendre à la Session et à valider la Transaction.

HbHelper ou somesuch.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X