NamingStrategyの使い方
概要
NamingStrategy とは、マッピングドキュメントから物理テーブル名とカラム名を決定するためのルールであり、org.hibernate.cfg.NamingStrategy インタフェースとして定義されています。
例
サブクラスの org.hibernate.cfg.ImprovedNamingStrategy クラスを用いて変換をした場合、クラス名やフィールド名は以下のように物理テーブル名やカラム名に変換されます。
UserName <-> user_name
ant の schemaexport タスクにおいて NamingStrategy を設定する方法
schemaexport タスクで、以下のように schemaexport 要素の namingStrategy 属性に NamingStrategy の FQCN を記述します。
<target name="schemaexport" description="creates ddl from hbm.xml files."> <taskdef name="schemaexport" classname="org.hibernate.tool.hbm2ddl.SchemaExportTask" /> <schemaexport config="hibernate_export.cfg.xml" quiet="no" text="no" drop="no" delimiter=";" namingStrategy="org.hibernate.cfg.ImprovedNamingStrategy" output="ddl/schema-export.sql"> <fileset dir="../../src/main/webapp/WEB-INF/classes"> <include name="**/*.hbm.xml"/> </fileset> </schemaexport> </target>
Configuration に対して NamingStrategy を設定する方法
net.sf.hibernate.cfg.Configuration#setNamingStrategy()メソッドに対して NamingStrategy を渡します。Hibernate を単体で利用する場合の例は Hibernate のマニュアルに書かれているので、今回は Spring Framework の applicationContext.xml ファイルで LocalSessionFactoryBean に対して NamingStrategy を設定する例を示します。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" autowire="byName"> <property name="mappingResources"> <list> <value>sample/domain/entity/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> </props> </property> </bean> <bean id="namingStrategy" class="org.hibernate.cfg.ImprovedNamingStrategy" />