eclipse 逆向工程生成hibernate实体类(注解或配置文件)

来源:互联网 发布:php报名系统 编辑:程序博客网 时间:2024/06/04 20:08

1.安装hibernate tools

在 help --> Eclipse Marketplace 中搜索 hibernate, 找到 jboss tools , 点击 install, 选择 hibernate tools , 其他的不装, 按照步骤安装即可

2.使用 Database Development 创建数据库连接


这个应该很简单, 选择要连接的数据库类型, 输入url,用户名和密码即可


3.在hibernate视图窗口中创建配置文件




点击 + 号, 或者右键空白区域, 点击 Add Configuration



如果后面生成时报错, 可能是 hibernate version 太高, 选个低的就可以了



点击 OK 后

选择 HIbernate Code  Generation, 






注意: 上图右边的 Catalog 表示的是对应的数据库名, 最好设置为空, 因为有可能换环境之后数据库名称不一样, hibernate.reveng.xml 是可以修改的, 可以添加或删除表, 重新生成对应实体




如果表设计的时候带有前缀比如Tbl_Entity, 可以自己写一个策略类, 来生成类名


可以选择生成策略类来格式化要生成的类的名字字段。可能会遇到:

It is indirectly referenced from required .class file

原因:你正要使用的类调用了另一个类,而这个类又调用了其他类,这种关系可能会有好多层。而在这个调用的过程中,某个类所在的包的缺失就会造成以上那个错误。

解决方法:导入缺失的包

browse选择你写的策略类就可以了。


期间可能要下载jar包

hibernate-tools包和hibernate-core包因为这个类用到了hibernate的东西。

[java] view plain copy
  1. import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy;  
  2. import org.hibernate.cfg.reveng.ReverseEngineeringSettings;  
  3. import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;  
  4. import org.hibernate.cfg.reveng.TableIdentifier;  
  5. import org.hibernate.util.StringHelper;  
  6.   
  7. public class CustomReverseEngineeringStrategy extends  
  8.         DefaultReverseEngineeringStrategy {  
  9.   
  10.     public CustomReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {  
  11.         super();  
  12.     }  
  13.      
  14.     public CustomReverseEngineeringStrategy(){  
  15.     }  
  16.   
  17.     private ReverseEngineeringSettings settings;  
  18.      
  19.     @Override  
  20.     public String tableToClassName(TableIdentifier table) {  
  21.         String tableName = table.getName();  
  22.         if (tableName != null && tableName.toUpperCase().startsWith("TBL_")) {  
  23.             String pkgName = settings.getDefaultPackageName();  
  24.             int lastIndex = tableName.indexOf("_");  
  25.             tableName = tableName.substring(lastIndex + 1);  
  26.   
  27.             String className = toUpperCamelCase(tableName);  
  28.   
  29.       //      if (pkgName.length() > 0)  
  30.       //          return StringHelper.qualify(pkgName, className);  
  31.             return className;  
  32.   
  33.         } else {  
  34.             return super.tableToClassName(table);  
  35.         }  
  36.     };  
  37.   
  38.     public void setSettings(ReverseEngineeringSettings settings) {  
  39.         super.setSettings(settings);  
  40.         this.settings = settings;  
  41.     }  
  42. }  
如果上面的方法没有生效, 则需要修改hibernate-tools的源码
下载hibernate-tools的源码, 修改DefaultReverseEngineeringStrategy类中相关的方法,类似上面, 然后将该类编译后的class文件打包到eclipse的hibernate-tools插件的jar包中
一般的位置为: 
plugins\org.jboss.tools.hibernate.runtime.v_4_0_5.0.1.Final-v20160331-1852-B88\lib, 也可以直接在 eclipse 中搜索 hibernate-toos

0 0