1、eclipse下载安装jboss tools插件
2、新建hibernate.cfg.xml
3、选择文件生成路径一般在 Project的配置文件存放地点resource。因为用maven创建所以放在src\main\resource下面
4、hibernate.cfg.xml 配置信息
sessonFactory 名字:oracle最好统一成 sessonFactory
控制台配置文件生成选项checkbox 打钩。oracle可以填写schema :数据库表空间来过滤表,sqlserver可以选择catalog来过滤。或者可以在生成的配置文件里面修改
5、console configuration配置文件生成
输入配置文件信息 :文件名
生成路径:在哪个项目下面
数据库连接:没有就新建
6、新建的数据库连接
驱动jar添加
点击ok 完成
7、选择hibernate.cfg.xml
8、ok以后的可以看见hibernate控制台配置信息
9、配置hibernate自动生成反向生成配置文件hibernate.reveng.xml
10、新建配置文件
11、输入配置信息 :名字
控制台配置文件:就是刚才生成的console configuration
输出目录:生成的文件存放的 src目录
12、输入包名:生成文件到哪个包下面。
hibernate.reveng.xml 控制台配置文件生成路径:仍然选择src\main\resources
13、生成以后可以选择要生成的表
15、选择exporters tab标签选中 生成类型。选择要生成的文件
可以选择domain code 和hibernate xml configuration因为使用了注解所以可以不用hbm.xml了
16、apply以后 点击run
17、如果表设计的时候带有前缀比如Tbl_Entity。参照http://blog.sina.com.cn/s/blog_49baa8c001015kgt.html
可以选择生成策略类来格式化要生成的类的名字字段。可能会遇到:
It is indirectly referenced from required .class file
原因:你正要使用的类调用了另一个类,而这个类又调用了其他类,这种关系可能会有好多层。而在这个调用的过程中,某个类所在的包的缺失就会造成以上那个错误。
解决方法:导入缺失的包
browse选择你写的策略类就可以了。期间可能要下载jar包
hibernate-tools包和hibernate-core包因为这个类用到了hibernate的东西。
import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy; import org.hibernate.cfg.reveng.ReverseEngineeringSettings; import org.hibernate.cfg.reveng.ReverseEngineeringStrategy; import org.hibernate.cfg.reveng.TableIdentifier; import org.hibernate.util.StringHelper; public class CustomReverseEngineeringStrategy extends DefaultReverseEngineeringStrategy { public CustomReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) { super(); } public CustomReverseEngineeringStrategy(){ } private ReverseEngineeringSettings settings; @Override public String tableToClassName(TableIdentifier table) { String tableName = table.getName(); if (tableName != null && tableName.toUpperCase().startsWith("TBL_")) { String pkgName = settings.getDefaultPackageName(); int lastIndex = tableName.indexOf("_"); tableName = tableName.substring(lastIndex + 1); String className = toUpperCamelCase(tableName); // if (pkgName.length() > 0) // return StringHelper.qualify(pkgName, className); return className; } else { return super.tableToClassName(table); } }; public void setSettings(ReverseEngineeringSettings settings) { super.setSettings(settings); this.settings = settings; } }实际生成的代码到了src下面。没有指定到我要的包下,是因为我注释了上面2行代码。