10.3.2. Seam 管理の Hibernate セッションの使用
Seam 管理の Hibernate セッションも同様に
components.xml で次のように記述することができます。
<persistence:hibernate-session-factory name="hibernateSessionFactory"/>
<persistence:managed-hibernate-session name="bookingDatabase"
auto-create="true"
session-factory-jndi-name="java:/bookingSessionFactory"/>
java:/bookingSessionFactory は hibernate.cfg.xml で指定されるセッションファクトリ名です。
<session-factory name="java:/bookingSessionFactory">
<property name="transaction.flush_before_completion">true</property>
<property name="connection.release_mode">after_statement</property>
<property name="transaction.manager_lookup_class">
org.hibernate.transaction.JBossTransactionManagerLookup
</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="connection.datasource">
java:/bookingDatasource
</property>
...
</session-factory>
注記
Seam はデータベースでセッションを同期しないので、
hibernate.transaction.flush_before_completion を常に有効にしてセッションが JTA トランザクションのコミットより先に自動的に同期されるようにしてください。
これで、 次のコードを使って JavaBean コンポーネントに管理 Hibernate
Session をインジェクトできます。
@In Session bookingDatabase;