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 创建实体关系图即概念模型.建立了 ...
随机推荐
- 浅谈css的伪元素::after和::before
css中的::after和::before已经被大量地使用在我们日常开发中了,使用他们可以使我们的文档结构更加简洁.但是很多人对::after和::before仍不是特别了解,究竟他们是做什么的?如何 ...
- 由浅入深学习ajax跨域(JSONP)问题
什么是跨域?说直白点就是获取别人网站上的内容.但这么说貌似又有点混淆,因为通常我们用ajax+php就可以获取别人网站的内容,来看下面这个例子. 来看看跨域的例子,jquery+ajax是不能跨域请求 ...
- “全能”选手—Django 1.10文档中文版Part1
本文是博主翻译的Django1.10版本官方文档的第一部分,如时间充裕,争取一直翻译下去,经验不足,或有错漏,敬请指正. 另外对于公开文档进行翻译的版权问题不是很清楚,如有侵权请联系我! 另外,要转载 ...
- Hive安装部署
目录 一. 安装Hive. 1 1. 选择CDH版本的... 1 2. 解压文件... 1 二. 配置Hive. 1 1. 配置环境变量 ...
- 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...
- LINQ to SQL语句(10)之Insert
1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提交到数据库. var newCustomer = new Custo ...
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType ...
- mysql 用户管理和权限设置
用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...
- Java面试基础概念总结
面向对象软件开发的优点有哪些? 答:开发模块化,更易维护和修改:代码之间可以复用:增强代码的可靠性.灵活性和可理解性. 多态的定义? 答:多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力. ...
- 菜鸟快飞之JavaScript对象、原型、继承(三)
正文之前需要声明的一点是,菜鸟系列博文全是基于ES5的,不考虑ES6甚至更高版本. 继承 由于我个人不是学计算机的,所以对于很多东西只是知其然,不知其所以然.就像这个继承,刚开始学JavaScript ...