假設全部的表名都有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>