很久以前的文档,今天特记录之
首先定义命名策略:
import java.util.Locale; import org.hibernate.cfg.DefaultNamingStrategy; import org.hibernate.cfg.NamingStrategy; import org.hibernate.util.StringHelper; public class LocalNamingStrategy extends DefaultNamingStrategy { /** * */ private static final long serialVersionUID = 1L; public static final NamingStrategy INSTANCE = new LocalNamingStrategy(); protected LocalNamingStrategy() { } public String classToTableName(String className) { String name = StringHelper.unqualify(className); String language = Locale.getDefault().getLanguage(); return addUnderscores(name + "_" + language); } public String tableName(String tableName) { return tableName; } public String columnName(String columnName) { return columnName; } private String addUnderscores(String name) { StringBuffer buf = new StringBuffer(name.replace('.', '_')); for (int i = 1; i < buf.length() - 1; i++) { if ('_' != buf.charAt(i - 1) && Character.isUpperCase(buf.charAt(i)) && !Character.isUpperCase(buf.charAt(i + 1))) { buf.insert(i++, '_'); } } return buf.toString().toLowerCase(); } }
配置spring
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <description>xmrz</description> <bean id="dataSource" class="com.rosy.common.config.SettingDataSource"> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" destroy-method="close" > <property name="namingStrategy" ref="namingStrategy"/><!—加入命名策略--> <property name="dataSource"> <ref local="dataSource"/> </property> <property name="mappingResources"> …… </bean> <!—定义命名策略bean -- > <bean id="namingStrategy" class="com.rosy.common.dao.LocalNamingStrategy"/> …..
配置hbm文件:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.rosy.system.database.PubBaseCode"> (去掉了映射是的table=” pub_base_code”) <id name="code" type="java.lang.String"> <column length="15" name="code"/> <generator class="assigned"/> </id> <property generated="never" lazy="false" name="codeName" type="java.lang.String"> <column length="20" name="code_name"/> </property> </class> </hibernate-mapping>