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、生成以後可以選擇要生成的表
14、完成以後畫面
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行代碼。