Créer Hibernate-Session, conformément à la Demande
Je viens de commencer une simple Java projettest qui gère certaines entités de l'utilisation d'Hibernate et fournit une interface REST de manipuler ces objets et fournissent davantage d'une logique d'entreprise. Le RESTE de l'interface est créée à l'aide de RESTEasy et de la Jetée.
Tout fonctionne bien jusqu'à présent, mais j'ai le sentiment que je suis en train d'écrire trop de code réutilisable. Comme je n'ai pas beaucoup d'expérience dans ces Java cadres je me demandais simplement si quelqu'un pouvait me donner un indice sur la façon d'améliorer la situation.
- Création de Sessions Hibernate par Demande
Bien, que j'ai compris, je dois créer une session Hibernate conformément à la demande et à la fin je suis obligé de le fermer. Donc, actuellement tous mes méthodes de service ressembler à ceci:
Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();
Est-il un moyen de supprimer ces deux lignes pour en quelque sorte faire cela automatiquement?
Actuellement mon service est enregistré en tant que RestEASY singleton. Le changement d'un RESTeasy ressource et de la création de la session dans le constructeur de résoudre le problème? Je pense que ça va résoudre le problème de la création de la session. Mais d'où pour le fermer?
En C++, cela peut facilement être fait de la création d'un objet compris dans l'étendue qui ferme la session à la fin. Mais en Java?
- Chaque fois qu'une telle RESTE la demande est faite, je dois vérifier la validité d'une session de (l'utilisateur dispose de la connexion précédemment). Est un ServletFilter la bonne façon de le faire?
Générale: Existe-t-il d'autres modèles ou cadres que je devrait envisager d'utiliser? Je veux dire, je veux le garder aussi simple que possible et surtout que je n'ai pas beaucoup d'expérience, je ne veux pas finir à l'aide de Printemps ou tout ce poids lourd de cadre. Semble que je suis habitué à la simplicité de Python et Django, mais pour ce petit projet, je dois utiliser Java.
Merci beaucoup!
OriginalL'auteur duselbaer | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
Hibernate actuel de l'approche recommandée pour la gestion des Sessions est détaillée sur ce page wiki. En particulier, je pense que vous avez besoin de lire le dernier paragraphe: Tout cela est très difficile, ne peut pas faire plus simple?
En fin de compte, vous ne devez dire à la couche de persistance que "je suis sur le point de faire quelque chose" (qui sont en général obtient également la Session de le faire avec) et "je suis fait de le faire". Vous pouvez le faire avec les annotations, ou Les transactions JTA, mais cette information n'a encore être communiquée!
OriginalL'auteur sharakan
Injecter SessionFactory à votre Objet d'Accès aux Données et l'utilisation d'une sessionFactory.getCurrentSession() pour accéder à la Session Hibernate objet.
vous pouvez faire usage de l'une des classes Usine disponibles pour mettre en œuvre cette..
Puis votre code devrait ressembler à ceci..
En cas de struts2, u peut utiliser des séparateurs d'initialiser et de fermer la session de l'objet.
OriginalL'auteur vinodn
Vous devriez essayer d'écrire un Filtre qui fait cela. Le printemps OpenSessionInViewFilter est un bon endroit pour commencer si vous avez besoin d'un exemple.
OriginalL'auteur verhage