La principale recherche de cet article est la fermeture de Hibernate en session, comme suit.
Étudiant étudiant = nouveau étudiant (); Student.SetName ("Jan"); Student.Setage ("22"); Student.SetAddress ("Zhaoqing City, province du Guangdong"); Session Session = HiberNateUtil.getSessionFactory (). GetCurrentession (); session.begintransaction (); Session.Save (étudiant); session.flush (); session.getTransaction (). commit (); 1. Quelle est la différence entre GetCurrentession () et OpenSession ()?
getCurrentSession() sera liée au thread actuel, tandis que la session créée avec openSession() ne sera pasgetCurrentSession() sera automatiquement fermée lorsque la validation ou le rollback, tandis que la session créée avec openSession() doit être fermée manuellement. 2. Pour utiliser getCurrentSession() vous devez ajouter la configuration suivante au fichier hibernate.cfg.xml:
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.current_session_context_class">jta</property>
Quelle est la différence et la corrélation entre openSession() et getCurrentSession() ?
Lorsque SessionFactory est démarré, Hibernate créera le CurrentessionContext correspondant en fonction de la configuration. Lorsque getCurrentSession() est appelé, la méthode réelle à exécuter est CurrentSessionContext.currentSession() . Lorsque currentSession() est exécuté, si la session en cours est vide, Currentession appellera OpenSession de SessionFactory. Donc getCurrentSession() est une meilleure façon d'obtenir la session pour Java EE.
Plusieurs fois, session is close(); La raison en est que vous le définissez dans hibernate.cfg.xml
<propriété name = "hibernate.current_session_context_class"> thread </ propriété>
Le système ferme la session après commit(); Après l'avoir exécuté. Pour le moment, si vous fermez manuellement la session, cela indiquera bien sûr une erreur.
Ce qui précède est tout le contenu de cet article sur l'analyse de l'instance fermée d'Hibernate lors de la session, j'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!