S2Hiberanteでマッピングファイルの自動登録

こんな感じで考えました。
まずpersistence.xmlのproviderにorg.seasar.hibernate.jpa.S2HibernatePersistenceを指定。

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence>
  <persistence-unit name="persistenceUnit" transaction-type="JTA">
    <jta-data-source>jdbc/DataSource</jta-data-source>
    <provider>org.seasar.hibernate.jpa.S2HibernatePersistence</provider>
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
      <property name="hibernate.jndi.class" value="org.seasar.extension.j2ee.JndiContextFactory"/>
      <property name="hibernate.transaction.manager_lookup_class" value="org.seasar.hibernate.jpa.transaction.S2TransactionManagerLookup"/>
      <property name="hibernate.show_sql" value="false"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.use_sql_comments" value="false"/>
    </properties>
  </persistence-unit>
</persistence>

次にdiconファイルでResourceAutoDetectorImplとS2HibernateConfigurationを設定。この例ではMETA-INF直下のxxxOrm.xmlを自動で読み込むようにしてみました。(Naming Conventions for Java Persistenceに従うとマッピングファイル名はxxxOrm.xmlとするのがいいらしいです。この規約一般的になるのかなぁ?)

hoge.dicon

<components>

  <component name="detector" class="org.seasar.framework.autodetector.impl.ResourceAutoDetectorImpl">
    <initMethod name="addReferenceClass">
      <arg>@org.seasar.hibernate.jpa.Employee@class</arg>
    </initMethod>
    <initMethod name="addResourceNamePattern">
      <arg>"META-INF/.*Orm\\.xml"</arg>
    </initMethod>
  </component>
  
  <component class="org.seasar.hibernate.jpa.S2HibernateConfiguration">
    <initMethod name="addResourceAutoDetector">
      <arg>detector</arg>
    </initMethod>
  </component>

</components>