假设全部的表名都有TBL_tableName这种形式的约定,替代手工的简单方法是继承“ImprovedNamingStrategy”类,具体代码以下:java
public class HibernateNamingStrategy extends ImprovedNamingStrategy { @Override public String classToTableName(String className) { return "TBL_"+className; } @Override public String tableName(String tableName) { return "TBL_"+tableName; } }
当显示指定table名的时候,如:spring
@Table(name="user") public class User implements Serializable {
那么建表时,会调用tableName()这个方法,最终建表的表名将会是“TBL_USER”。session
当没有显示指定table名的时候,将会调用classToTableName()。ide
相似的还有表的列名命名约定,也能够采用这种方法,只需再覆盖“ImprovedNamingStrategy”类的columnName()方法和propertyToColumnName()方法。ui
为了让这个类生效,还须要进行一些设置:spa
SessionFactory sessionFactory = new Configuration() .setNamingStrategy(new HibernateNamingStrategy()) .buildSessionFactory();
若是与spring整合,能够在sessionFactory中这样设置:
code
<property name="namingStrategy"> <bean class="test.HibernateNamingStrategy" /> </property>