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>