Quelle est la différence entre une séance et une transaction en JPA 2.0?
Je viens de commencer mon JPA 2.0 études, et j'ai ce bout de code:
em = SessionFactory.startSession();
tx = em.getTransaction();
Mon problème est: je ne suis pas sûr si j'ai complètement comprendre la différence entre l'utilisation d'une session et l'utilisation d'une transaction. En quelques lignes, quelqu'un peut-il me dire les différences les plus importantes entre eux ? Merci !
- developer.jboss.org/wiki/SessionsAndTransactions - vérifier ce lien
Vous devez vous connecter pour publier un commentaire.
Vous allez à la banque pour déposer 2 contrôles, et de retirer une petite somme.
Alors vous vous tenez dans la ligne jusqu'à ce guichet s'ouvre.
Vous effectuez votre premier dépôt.
Puis, votre second.
Ensuite, vous faites votre retrait.
Maintenant, vous avez terminé, vous quittez le comptoir.
Arriver à le narrateur est comme de la création de votre session, vous êtes maintenant dans la banque, prêt à travailler.
Chaque dépôt et de retrait sont leurs propres contenus de travail, ce sont vos transactions.
Lorsque vous avez terminé votre travail et les congés, vous êtes à la clôture ou l'abandon de votre session.
Donc, en substance, une session contient vos transactions, après tout, vous ne pouvez pas faire un dépôt à la banque si vous n'avez jamais aller à la banque le droit?
session.close()
lèvera une exception...En JPA, il n'y a pas de Session et aucune SessionFactory. SessionFactory est une mise en veille prolongée-interface spécifique que vous ne devriez pas utiliser si vous utilisez JPA (utiliser Hibernate propre de l'API ou de l'utilisation d'Hibernate en tant que Fournisseur JPA, mais pas les deux.)
Une session est ce que vous utiliser pour interagir avec la base de données.
Une transaction est utilisée pour spécifier les limites de la session de fonctionner à l'intérieur.
Essentiellement, les transactions empêcher la base de données d'être endommagé en ne permettant qu'à une session d'interagir avec elle à un moment. (C'est un peu plus compliqué alors que, comme vous pouvez avoir de nombreuses opérations de lecture à partir de la base de données, mais seulement une opération qui est écrit.)
En veille prolongée, la gestion des transactions est tout à fait standard, souvenez-vous de toutes les exceptions générées par Hibernate sont FATALES, vous devez annuler la transaction et de fermer la session en cours immédiatement.
Voici une transaction de Hibernate modèle :