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 创建实体关系图即概念模型.建立了 ...
随机推荐
- golang 使用 iota
iota是golang语言的常量计数器,只能在常量的表达式中使用. iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(io ...
- WebApi安全性 使用TOKEN+签名验证
首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...
- 01windows窗体程序学习
静态用户名和密码的登录练习 private void button2_Click(object sender, EventArgs e) { textUser.Text = Convert.ToStr ...
- EXCEL中多级分类汇总空白字段填充
使用场景,多级分类汇总后,在汇总的字段中显示空白,这样对我们直接取值做表带来十分不更(假像有5000条记录,1000条汇总项) 相关技术,INDIRECT函数,单元格定位功能. 在数据区域外任意一个单 ...
- Java迭代器
迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...
- 深入Collection集合
List集合 一.ArraryList: 最基本的集合不多做介绍 二.Vector Vector cn=new Vector(); A:有特有功能 a:添加 public void ad ...
- Eclipse复制时的中文乱码问题
点击"Project"--"Properties"--"Resource",在其中改变"Text file encoding&qu ...
- 使用Mavne生成可以执行的jar文件
到目前为之,还没有运行HelloWorld的项目,不要忘了HelloWorld类可是有一个main方法的.使用mvn clean install命令默认生成的jar 包是不能直接运行的.因为带有mai ...
- 《Web开发中块级元素与行内元素的区分》
一.块级元素的特性: 占据一整行,总是重起一行并且后面的元素也必须另起一行显示. HTML中块级元素列举如下: address(联系方式信息) article(文章内容) aside(伴随内容) au ...
- Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)
在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示 ...