PageRenderTime 43ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/hibernate-distribution-3.3.0.GA/documentation/manual/fr-FR/html/architecture-current-session.html

https://github.com/mznm9t/hibernate
HTML | 97 lines | 94 code | 3 blank | 0 comment | 0 complexity | 25170157b23a0f068d7ae6552a4efa8b MD5 | raw file
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  4. <title>2.5.&nbsp;Sessions Contextuelles</title>
  5. <link rel="stylesheet" href="css/html.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
  7. <link rel="start" href="index.html" title="HIBERNATE - Persistance relationnelle en Java standard">
  8. <link rel="up" href="architecture.html" title="Chapitre&nbsp;2.&nbsp;Architecture">
  9. <link rel="prev" href="architecture-jca.html" title="2.4.&nbsp;Support JCA">
  10. <link rel="next" href="session-configuration.html" title="Chapitre&nbsp;3.&nbsp;Configuration">
  11. </head>
  12. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  13. <div class="navheader">
  14. <table width="100%" summary="Navigation header">
  15. <tr>
  16. <th colspan="3" align="center">2.5.&nbsp;Sessions Contextuelles</th>
  17. </tr>
  18. <tr>
  19. <td width="20%" align="left"><a accesskey="p" href="architecture-jca.html">Pr&eacute;c&eacute;dent</a>&nbsp;
  20. </td>
  21. <th width="60%" align="center">Chapitre&nbsp;2.&nbsp;Architecture</th>
  22. <td width="20%" align="right">&nbsp;<a accesskey="n" href="session-configuration.html">Suivant</a></td>
  23. </tr>
  24. </table>
  25. <hr>
  26. </div>
  27. <div class="sect1" lang="fr-FR">
  28. <div class="titlepage">
  29. <div>
  30. <div>
  31. <h2 class="title" style="clear: both"><a name="architecture-current-session"></a>2.5.&nbsp;Sessions Contextuelles
  32. </h2>
  33. </div>
  34. </div>
  35. </div>
  36. <p>Certaines applications utilisant Hibernate ont besoin d'une sorte de session "contextuelle", o&ugrave; une session est li&eacute;e &agrave; la
  37. port&eacute;e d'un contexte particulier. Cependant, les applications ne d&eacute;finissent pas toutes la notion de contexte de la m&ecirc;me mani&egrave;re,
  38. et diff&eacute;rents contextes d&eacute;finissent diff&eacute;rentes port&eacute;es &agrave; la notion de "courant". Les applications &agrave; base d'Hibernate, versions
  39. pr&eacute;c&eacute;dentes &agrave; la 3.0 utilisaient g&eacute;n&eacute;ralement un principe maison de sessions contextuelles bas&eacute;es sur le <code class="literal">ThreadLocal</code>, ainsi que sur des classes utilitaires comme <code class="literal">HibernateUtil</code>, ou utilisaient des framework tiers (comme Spring ou Pico) qui fournissaient des sessions contextuelles bas&eacute;es sur l'utilisation
  40. de proxy/interception.
  41. </p>
  42. <p>A partir de la version 3.0.1, Hibernate a ajout&eacute; la m&eacute;thode <code class="literal">SessionFactory.getCurrentSession()</code>. Initialement, cela demandait l'usage de transactions <code class="literal">JTA</code>, o&ugrave; la transaction <code class="literal">JTA</code> d&eacute;finissait la port&eacute;e et le contexte de la session courante. L'&eacute;quipe Hibernate pense que, &eacute;tant donn&eacute;e la maturit&eacute; des impl&eacute;mentations
  43. de <code class="literal">JTA TransactionManager</code> , la plupart (sinon toutes) des applications devraient utiliser la gestion des transactions par <code class="literal">JTA</code> qu'elles soient ou non d&eacute;ploy&eacute;es dans un conteneur <code class="literal">J2EE</code>. Par cons&eacute;quent, vous devriez toujours contextualiser vos sessions, si vous en avez besoin, via la m&eacute;thode bas&eacute;e sur JTA.
  44. </p>
  45. <p>Cependant, depuis la version 3.1, la logique derri&egrave;re <code class="literal">SessionFactory.getCurrentSession()</code> est d&eacute;sormais branchable. A cette fin, une nouvelle interface d'extension (<code class="literal">org.hibernate.context.CurrentSessionContext</code>) et un nouveau param&egrave;tre de configuration (<code class="literal">hibernate.current_session_context_class</code>) ont &eacute;t&eacute; ajout&eacute;s pour permettre de configurer d'autres moyens de d&eacute;finir la port&eacute;e et le contexte des sessions courantes.
  46. </p>
  47. <p>Allez voir les Javadocs de l'interface <code class="literal">org.hibernate.context.CurrentSessionContext</code> pour une description d&eacute;taill&eacute;e de son contrat. Elle d&eacute;finit une seule m&eacute;thode, <code class="literal">currentSession()</code>, depuis laquelle l'impl&eacute;mentation est responsable de traquer la session courante du contexte. Hibernate fournit deux impl&eacute;mentation
  48. de cette interface.
  49. </p>
  50. <div class="itemizedlist">
  51. <ul type="disc">
  52. <li>
  53. <p><code class="literal">org.hibernate.context.JTASessionContext</code> - les sessions courantes sont associ&eacute;es &agrave; une transaction <code class="literal">JTA</code>. La logique est la m&ecirc;me que l'ancienne approche bas&eacute;e sur JTA. Voir les javadocs pour les d&eacute;tails.
  54. </p>
  55. </li>
  56. <li>
  57. <p><code class="literal">org.hibernate.context.ThreadLocalSessionContext</code> - les sessions courantes sont associ&eacute;es au thread d'ex&eacute;cution. Voir les javadocs pour les d&eacute;tails.
  58. </p>
  59. </li>
  60. <li>
  61. <p><code class="literal">org.hibernate.context.ManagedSessionContext</code> - current sessions are tracked by thread of execution. However, you are responsible to bind and unbind a <code class="literal">Session</code> instance with static methods on this class, it does never open, flush, or close a <code class="literal">Session</code>.
  62. </p>
  63. </li>
  64. </ul>
  65. </div>
  66. <p>The first two implementations provide a "one session - one database transaction" programming model, also known and used as
  67. <span class="emphasis"><em>session-per-request</em></span>. The beginning and end of a Hibernate session is defined by the duration of a database transaction. If you use programmatic
  68. transaction demarcation in plain JSE without JTA, you are advised to use the Hibernate <code class="literal">Transaction</code> API to hide the underlying transaction system from your code. If you use JTA, use the JTA interfaces to demarcate transactions.
  69. If you execute in an EJB container that supports CMT, transaction boundaries are defined declaratively and you don't need
  70. any transaction or session demarcation operations in your code. Refer to <a href="transactions.html" title="Chapitre&nbsp;11.&nbsp;Transactions et acc&egrave;s concurrents">Chapitre&nbsp;11, <i xmlns:xlink="http://www.w3.org/1999/xlink">Transactions et acc&egrave;s concurrents</i></a> for more information and code examples.
  71. </p>
  72. <p>Le param&egrave;tre de configuration <code class="literal">hibernate.current_session_context_class</code> d&eacute;finit quelle impl&eacute;mentation de <code class="literal">org.hibernate.context.CurrentSessionContext</code> doit &ecirc;tre utilis&eacute;e. Notez que pour assurer la compatibilit&eacute; avec les versions pr&eacute;c&eacute;dentes, si ce param&egrave;tre n'est pas d&eacute;fini
  73. mais qu'un <code class="literal">org.hibernate.transaction.TransactionManagerLookup</code> est configur&eacute;, Hibernate utilisera le <code class="literal">org.hibernate.context.JTASessionContext</code>. La valeur de ce param&egrave;tre devrait juste nommer la classe d'impl&eacute;mentation &agrave; utiliser, pour les deux impl&eacute;mentations fournies,
  74. il y a cependant deux alias correspondant: "jta" et "thread".
  75. </p>
  76. </div>
  77. <div class="navfooter">
  78. <hr>
  79. <table width="100%" summary="Navigation footer">
  80. <tr>
  81. <td width="40%" align="left"><a accesskey="p" href="architecture-jca.html">Pr&eacute;c&eacute;dent</a>&nbsp;
  82. </td>
  83. <td width="20%" align="center"><a accesskey="u" href="architecture.html">Niveau sup&eacute;rieur</a></td>
  84. <td width="40%" align="right">&nbsp;<a accesskey="n" href="session-configuration.html">Suivant</a></td>
  85. </tr>
  86. <tr>
  87. <td width="40%" align="left" valign="top">2.4.&nbsp;Support JCA&nbsp;</td>
  88. <td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td>
  89. <td width="40%" align="right" valign="top">&nbsp;Chapitre&nbsp;3.&nbsp;Configuration</td>
  90. </tr>
  91. </table>
  92. </div>
  93. </body>
  94. </html>