IDEA 中生成 Hibernate 逆向工程实践
谈起 Hibernate 应该得知道 Gavin King 大叔,他构建了 Hibernate ,并将其捐献给了开源社区。

Hibernate 对象关系映射解决方案,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
Hibernate 的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。
Hibernate 也是目前Java开发中最为火热的数据库持久层框架,现已归JBOSS所有。
好了言归正传,IDEA 对开发者真的是贴心的小棉袄,本篇博客记录下 IDEA 中连接数据库反转生成 Hibernate 实体和配置文件。
1. 打开 DataBase 窗口,添加数据源



OK,数据源已添加好。
2. 添加 hibernat 持久层支持,生成实体 Bean /配置文件



然后选择数据源,选择包,添加生成 Bean 的后缀,选择表,选择生成 xml 配置文件还是注解。
OK,结束,是不是比 Eclipse/MyEclipse 上面安装各种插件效率要高的多。
如果你选择生成带 JPA 注解类,映射文件是可以省略的,相反如果你生成映射文件,JPA 注解也可以省略。
看你喜欢哪种方式,有机会说说 JPA 注解类和映射文件在项目实战中的优劣。
生成的JPA 注解类:
@Entity
@Table(name = "user", schema = "db_test", catalog = "")
public class UserPO {
private String uuid;
private String name;
private String passwd;
private String sex;
private Timestamp birthday;
private String phone;
private String photo;
private String email;
private String yxbz;
private String sorts; @Id
@Column(name = "UUID")
public String getUuid() {
return uuid;
} public void setUuid(String uuid) {
this.uuid = uuid;
} @Basic
@Column(name = "NAME")
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Basic
@Column(name = "PASSWD")
public String getPasswd() {
return passwd;
} public void setPasswd(String passwd) {
this.passwd = passwd;
} @Basic
@Column(name = "SEX")
public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Basic
@Column(name = "BIRTHDAY")
public Timestamp getBirthday() {
return birthday;
} public void setBirthday(Timestamp birthday) {
this.birthday = birthday;
} @Basic
@Column(name = "PHONE")
public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} @Basic
@Column(name = "PHOTO")
public String getPhoto() {
return photo;
} public void setPhoto(String photo) {
this.photo = photo;
} @Basic
@Column(name = "EMAIL")
public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} @Basic
@Column(name = "YXBZ")
public String getYxbz() {
return yxbz;
} public void setYxbz(String yxbz) {
this.yxbz = yxbz;
} @Basic
@Column(name = "SORTS")
public String getSorts() {
return sorts;
} public void setSorts(String sorts) {
this.sorts = sorts;
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; UserPO userPO = (UserPO) o; if (uuid != null ? !uuid.equals(userPO.uuid) : userPO.uuid != null) return false;
if (name != null ? !name.equals(userPO.name) : userPO.name != null) return false;
if (passwd != null ? !passwd.equals(userPO.passwd) : userPO.passwd != null) return false;
if (sex != null ? !sex.equals(userPO.sex) : userPO.sex != null) return false;
if (birthday != null ? !birthday.equals(userPO.birthday) : userPO.birthday != null) return false;
if (phone != null ? !phone.equals(userPO.phone) : userPO.phone != null) return false;
if (photo != null ? !photo.equals(userPO.photo) : userPO.photo != null) return false;
if (email != null ? !email.equals(userPO.email) : userPO.email != null) return false;
if (yxbz != null ? !yxbz.equals(userPO.yxbz) : userPO.yxbz != null) return false;
if (sorts != null ? !sorts.equals(userPO.sorts) : userPO.sorts != null) return false; return true;
} @Override
public int hashCode() {
int result = uuid != null ? uuid.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (passwd != null ? passwd.hashCode() : 0);
result = 31 * result + (sex != null ? sex.hashCode() : 0);
result = 31 * result + (birthday != null ? birthday.hashCode() : 0);
result = 31 * result + (phone != null ? phone.hashCode() : 0);
result = 31 * result + (photo != null ? photo.hashCode() : 0);
result = 31 * result + (email != null ? email.hashCode() : 0);
result = 31 * result + (yxbz != null ? yxbz.hashCode() : 0);
result = 31 * result + (sorts != null ? sorts.hashCode() : 0);
return result;
}
}
生成的映射文件:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <class name="com.rombo.hiberdemo.po.OrgaUserPO" table="orga_user" schema="db_test">
<id name="uuid" column="UUID"/>
<property name="orgaid" column="ORGAID"/>
<property name="userid" column="USERID"/>
<property name="mtype" column="MTYPE"/>
</class>
</hibernate-mapping>
IDEA 中生成 Hibernate 逆向工程实践的更多相关文章
- IDEA 中生成 MyBatis 逆向工程实践
IDEA 逆向 MyBatis 工程时,不像支持 Hibernate 那样有自带插件,需要集成第三方的 MyBatis Generator. MyBatis Generator的详细介绍 http:/ ...
- MyEclipse10中自动生成Hibernate的实体和xml配置文件
前提:1.在项目中添加Hibernate支持 2.MyEclipse中已经创建好数据库连接 3.表已经建好并且有主键 步骤如下: 1.在DB Browser窗口的已打开连接节点中选中用户创建的所有的表 ...
- 用eclipes 添加jboss tools中的hibernate tool进行反向工程生成数据库对应的BOJO(Javabean)
用eclipes 添加jboss tools中的hibernate tool进行反向工程生成数据库对应的BOJO(Javabean) 安装: 在help中eclise marksplace中查询JBo ...
- Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类
一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3. ...
- eclipse中从数据库生成hibernate实体类
为什么写这篇BLOG,是因为经常有同事或网友问起我hiberante实体类的生成问题.所以下次再有人问我可以省一堆的话了,其实这个真的是很简单. 现在hibernate在项目中的应用是越 ...
- eclipse从数据库逆向生成Hibernate实体类
做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...
- 富文本编辑器Ueditor 及 hibernate 逆向工程
1.1 富文本编辑器Ueditor ueditor下载地址: http://ueditor.baidu.com/ 下载1.4.3 –utf8-Jsp版本.完整demo可参考下载文件 ...
- eclipse逆向生成hibernate的实体类(注解和配置文件)
eclipse从数据库逆向生成Hibernate实体类(注解和配置文件) 分类: hibernate 数据库 java 2011-10-22 21:28 2915人阅读 评论(8) 收藏 举报 做项目 ...
- (十四)hibernate逆向工程
一.hibernate逆向工程生成实体 介绍一个模型设计工具PowerDesigner,这个是j2ee开发必要的一个工具.一般在开发中先使用PowerDesigner 创建实体关系图即概念模型.建立了 ...
随机推荐
- Hive读取外表数据时跳过文件行首和行尾
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 有时候用hive读取外表数据时,比如csv这种类型的,需要跳过行首或者行尾一些和数据无关的或者自 ...
- import matplolib 时出现"This probably means that tk wasn't installed properly."的解决方法
最近又添了一台新电脑,配置好各个依赖环境后想用matplotlib画个图,结果报出下面的错误 根据报错分析,应该是C:/Python27/tcl/tk8.5/tk.tcl这个文件出问题了,根据图中的信 ...
- 联想 Thinkpad X230 SLIC 2.1 Marker
等了好久,终于等到了 X230 的 SLIC 2.1 的 Marker !特发帖备份... 基本情况 笔记本:Lenovo X230(i5+8G+500G) 操作系统:Windows 7 Pro x6 ...
- Asp.Net Core 项目实战之权限管理系统(5) 用户登录
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 基于STM32Cube的IIC主从通信
1.建立STM32Cube工程,我使用的芯片是STM32F429,为了更简单的建立单独的IIC通信任务,我使用了FREERTOS,另外选择了RCC(系统时钟初始化),I2C1,I2C2(为了验证代码的 ...
- jquery禁用下拉框
禁用下拉框 //下拉框禁用 $("select").each(function () { $("#" + this.id).attr("disable ...
- c++ builder TIdHttp 获取不到cookie
用c++ builder 的TIdHttp组件Get一个ASP.Net MVC服务器的一个页面,获取页面中Cookie信息,修改后Post到服务器上去. 在本地调试的时候可以获取到,部署到服务器上就获 ...
- js Form.elements[i]的使用实例
function pdf(){ //一个html里面可能存在多个form,所以document.form[0]指的是第一个form,document.form[1]返回就是第二个form,如果没 ...
- Struts2框架深入详解版
一.认识Struts2 1. 什么是Web框架? 1.1 模型1 1.2 模型2 和MVC 1.3 Web框架的诞生 2. Struts1 到Struts2 2.1 其他 Web框架 2.2 ...
- css3 transition属性
最近打算学习css3知识,觉得css3写出来的效果好炫好酷,之前一直想要学习来着.可能之前的决心,毅力,耐心不够,所以想要重整起来,放下浮躁的心态,一步一个脚印,踏踏实实的来学习. 首先学习的是css ...