谈起 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; }}
生成的映射文件: