Hibernate自动建表实现命名约定
2014-11-02 00:00
162 查看
摘要: 数据库建表可能会有各种各样的约定,比如说会要求表都加上“TBL_”的前缀。可以手动的为每个实体类都加上对应的属性,来表示一个对应的表名。不过Hibernate还提供了另一种方式来解决这个问题
假设所有的表名都有TBL_tableName这种形式的约定,替代手工的简单方法是继承“ImprovedNamingStrategy”类,具体代码如下:
当显示指定table名的时候,如:
那么建表时,会调用tableName()这个方法,最终建表的表名将会是“TBL_USER”。
当没有显示指定table名的时候,将会调用classToTableName()。
类似的还有表的列名命名约定,也可以采用这种方法,只需再覆盖“ImprovedNamingStrategy”类的columnName()方法和propertyToColumnName()方法。
为了让这个类生效,还需要进行一些设置:
如果与spring整合,可以在sessionFactory中这样设置:
假设所有的表名都有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启动是自动生成CRUD语句和hibernate实现命名约定
- 在hibernate中实现oracle的自动增长
- 使用Hibernate+Middlegen实现自动代码生成简介
- eclipse实现hibernate相关xml文件自动提示
- 【SSH】——Hibernate实现简单的自动建表
- Hibernate命名空间如何实现?
- 在Struts--hibernate开发框架中,实现formbean与hibernate pojo的自动转换
- JAVA实现文件自动重命名
- Hibernate注解实现复杂主键(多主键,外键当主键,主键自动生成,普通主键)
- 利用hibernate实现oracle(每张表的ID)自动增长
- Hibernate3.x,hibernate3.x,Hibernate3.x整合Spring3.x不能实现自动创建表结构的解决办法:
- SPORE,一个很好的实现JS命名空间的管理,模块的定义,与自动加载依赖模块的脚本文件
- Hibernate+maven+eclipse 实现自动建表
- Hibernate+maven+eclipse 实现自动建表
- 通过Robocopy+DOS 命令+Windows排程实现自动备份(将特定文件/目录备份至自动创建的以年月日命名的目标目录)
- 使用Myeclipse10.0自动生成搭建SSH框架(数据库表自动反向转换成Hibernate实体)实现用户登陆
- hibernate、JDBC 实现 oracle ID 的自动增加 功能
- java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux
- hibernate命名查询的实现
- 实现Android apk 版本号自动生成和打包批量重命名功能