您的位置:首页 > 其它

Hibernate自动建表实现命名约定

2014-11-02 00:00 162 查看
摘要: 数据库建表可能会有各种各样的约定,比如说会要求表都加上“TBL_”的前缀。可以手动的为每个实体类都加上对应的属性,来表示一个对应的表名。不过Hibernate还提供了另一种方式来解决这个问题

假设所有的表名都有TBL_tableName这种形式的约定,替代手工的简单方法是继承“ImprovedNamingStrategy”类,具体代码如下:

public class HibernateNamingStrategy extends ImprovedNamingStrategy {

@Override
public String classToTableName(String className) {
return "TBL_"+className;
}

@Override
public String tableName(String tableName) {
return "TBL_"+tableName;
}

}


当显示指定table名的时候,如:

@Table(name="user")
public class User implements Serializable {


那么建表时,会调用tableName()这个方法,最终建表的表名将会是“TBL_USER”。

当没有显示指定table名的时候,将会调用classToTableName()。

类似的还有表的列名命名约定,也可以采用这种方法,只需再覆盖“ImprovedNamingStrategy”类的columnName()方法和propertyToColumnName()方法。

为了让这个类生效,还需要进行一些设置:

SessionFactory sessionFactory =
new Configuration()
.setNamingStrategy(new HibernateNamingStrategy())
.buildSessionFactory();


如果与spring整合,可以在sessionFactory中这样设置:

<property name="namingStrategy">
<bean class="test.HibernateNamingStrategy" />
</property>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hibernate 建表命名