Hibernate动态映射表名

很久以前的文档,今天特记录之 

首先定义命名策略: 
Java代码   收藏代码
  1. import java.util.Locale;  
  2.   
  3. import org.hibernate.cfg.DefaultNamingStrategy;  
  4. import org.hibernate.cfg.NamingStrategy;  
  5. import org.hibernate.util.StringHelper;  
  6.   
  7. public class LocalNamingStrategy extends DefaultNamingStrategy {   
  8.   
  9.     /** 
  10.      *  
  11.      */  
  12.     private static final long serialVersionUID = 1L;  
  13.     public static final NamingStrategy INSTANCE = new LocalNamingStrategy();   
  14.   
  15.     protected LocalNamingStrategy() {   
  16.     }   
  17.   
  18.     public String classToTableName(String className) {  
  19.   
  20.         String name = StringHelper.unqualify(className);  
  21.           
  22.           
  23.         String language = Locale.getDefault().getLanguage();  
  24.           
  25.         return addUnderscores(name + "_" + language);  
  26.     }   
  27.   
  28.     public String tableName(String tableName) {   
  29.         return tableName;   
  30.     }   
  31.   
  32.     public String columnName(String columnName) {   
  33.         return columnName;   
  34.     }   
  35.   
  36.     private String addUnderscores(String name) {   
  37.         StringBuffer buf = new StringBuffer(name.replace('.''_'));   
  38.         for (int i = 1; i < buf.length() - 1; i++) {   
  39.             if ('_' != buf.charAt(i - 1) && Character.isUpperCase(buf.charAt(i)) && !Character.isUpperCase(buf.charAt(i + 1))) {   
  40.                 buf.insert(i++, '_');   
  41.             }   
  42.         }   
  43.         return buf.toString().toLowerCase();   
  44.     }   
  45.   
  46. }  


配置spring 
Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3.   
  4. <beans>  
  5.   
  6.     <description>xmrz</description>   
  7.       
  8.     <bean id="dataSource"  
  9.           class="com.rosy.common.config.SettingDataSource">  
  10.     </bean>    
  11.       
  12.     <bean id="sessionFactory"  
  13.           class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"  
  14.             destroy-method="close"  >   
  15.         <property name="namingStrategy" ref="namingStrategy"/><!—加入命名策略-->  
  16.         <property name="dataSource">  
  17.             <ref local="dataSource"/>  
  18.         </property>  
  19.         <property name="mappingResources">  
  20. ……  
  21. </bean>  
  22. <!—定义命名策略bean -- >  
  23. <bean id="namingStrategy" class="com.rosy.common.dao.LocalNamingStrategy"/>  
  24. …..  


配置hbm文件: 
Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3.                                    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--   
  5.     Mapping file autogenerated by MyEclipse Persistence Tools  
  6. -->  
  7. <hibernate-mapping>  
  8.  <class name="com.rosy.system.database.PubBaseCode">  
  9. (去掉了映射是的table=” pub_base_code”)  
  10.   <id name="code" type="java.lang.String">  
  11.    <column length="15" name="code"/>  
  12.    <generator class="assigned"/>  
  13.   </id>  
  14.   <property generated="never" lazy="false" name="codeName" type="java.lang.String">  
  15.    <column length="20" name="code_name"/>  
  16.   </property>  
  17.  </class>  
  18. </hibernate-mapping>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值