Hegel2011的博客

读书 - 工作 - 生活 - 笔记

JPA的naming Strategy

JPA的配置通常如下即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  <!-- Jpa Entity Manager 配置 -->
  <bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
    <property name="packagesToScan" value="com.sanss." />
    <property name="jpaProperties">
      <props>
        <!-- 命名规则 My_NAME->MyName -->
        <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.DefaultComponentSafeNamingStrategy</prop>
        <prop key="hibernate.show_sql">true</prop>
      </props>
    </property>
  </bean>

其中值得注意的是Resposity的生成其实依赖于里面的packagesToScan,而表名、表字段和对象之间的映射转换则依赖于hibernate.ejb.naming_strategy

此属性共有四个选项:

1
2
3
4
org.hibernate.cfg.DefaultComponentSafeNamingStrategy
org.hibernate.cfg.DefaultNamingStrategy
org.hibernate.cfg.EJB3NamingStrategy
org.hibernate.cfg.ImprovedNamingStrategy

首两个选项基本就是不做命名的转换,后面两个会把大小写的骆驼写法转换成带下划线的小写字符。同时,这个类可以自己继承并进行扩展定制,如果命名要求实在特殊,可以自行编写。 甚至表名后带日期等均可以自行定制。

Included file 'twitter_sharing.html' not found in _includes directory