談起 Hibernate 應該得知道 Gavin King 大叔,他構建了 Hibernate ,並將其捐獻給了開源社區。 Hibernate 對象關係映射解決方案,為面向對象的領域模型到傳統的關係型資料庫的映射,提供了一個使用方便的框架。 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; } }View Code
生成的映射文件:
<?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>View Code