1.說明:Idea 下,項目對應於 Eclipse 下的 workspace,Module 對應於 Eclipse 下的項目。Idea 下,新添加的項目既可以單獨作為一個 Project,也可以作為一個 Project 下的 Module。 2.本篇文章介紹內容: (1)如何在 Project 新建 ...
1.說明:Idea 下,項目對應於 Eclipse 下的 workspace,Module 對應於 Eclipse 下的項目。Idea 下,新添加的項目既可以單獨作為一個 Project,也可以作為一個 Project 下的 Module。
2.本篇文章介紹內容:
(1)如何在 Project 新建 Hibernate Module。
(2)如何添加 jar 包到 Module 下。
(3)如何添加 hibernate.cfg.xml,以及如何自定義模板。
(4)如何添加 Entity.hbm.xml 文件,以及自動生成實體。
3.在最開始前,添加 Hibernate 的插件。
4.如何在 Project 下新建 Hibernate Module。
(1)新建一個空項目。
(2)點擊 Finish 之後,會彈出 Module 結構圖。
(3)新建 Hibernate Framework 的 Module。
說明:第一處表紅的地方選擇後會預設創建 hbm.cfg.cml 文件以及一個測試類,點擊 Configure 會彈出第二張圖,需要註意的是 level 的選擇。
(4)創建完成。
5.如何添加 jar 包到 Module 下。
(1)打開 Project Structure 。
(2)選擇 library。選擇從 maven 從下載。
(3)點擊 OK 後,會彈出 Configure Library 的彈窗,同樣註意 level 的選取。
(4)選中添加的 Jar 包,點擊 Add Selected 按鈕完成添加。
6.如何添加 hibernate.cfg.xml,以及如何自定義模板。
(1)若在新建 Module 的時候沒有選擇創建 hibernate.cfg.xml 文件,可以通過如下的方式來添加。
(2)點開 Project Structure
點擊加號,選擇 hibernate.cfg.xml。
(3)預設添加的 hibernate.cfg.xml。
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.url"/> <property name="connection.driver_class"/> <property name="connection.username"/> <property name="connection.password"/> <!-- DB schema will be updated if needed --> <!-- <property name="hbm2ddl.auto">update</property> --> </session-factory> </hibernate-configuration>
(4)自定義模板。
如果覺著 Idea 給添加的 hibernate.cfg.xml 不太友好的話,可以通過自定義模板的方式來添加適合自己的文件。
點擊 OK 之後就可以使用添加的 hibernate.cfg.xml。
7.如何添加 Entity.hbm.xml 文件,以及自動生成實體。
(1)說明:在 Eclipse 下,添加 Hibernate tool 後,可以根據已經創建的實體去創建對應的 Entity.hbm.xml 文件,然後在程式啟動的時候,
會在資料庫生成對應的表信息。而在 Idea 下,是根據表和 hibernate.cfg.xml 去創建的實體和 Entity.hbm.xml 文件,至於能否根據實體
去創建 Entity.hbm.xml 和表信息,現在還沒有探索出來,探索出來時再進行補充,也希望知道的童鞋告訴我,謝謝。
(2)在 hibernate.cfg.xml 文件中配置連接資料庫基本信息,以及 Hibernate 基本信息和自動生成數據表策略。
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 配置連接資料庫的基本信息 --> <property name="connection.username">root</property> <property name="connection.password">123456</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///hibernate</property> <!-- 配置 Hibernate 的基本信息 --> <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 指定自動生成數據表的策略 --> <property name="hbm2ddl.auto">update</property> </session-factory> </hibernate-configuration>
(3)點擊 Persistance 視圖(View-ToolWindow-Persistance 或 直接點擊快捷方式)
如果沒有已經創建的 data source ,可以通過點擊標紅的按鈕進行添加。如:
在不勾選 JPA Annotations 的情況下,生成的實體不含 JPA 註解。如:
/** * @author solverpeng * @create 2016-09-28-14:11 */ public class NewsEntity { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object o) { if(this == o) { return true; } if(o == null || getClass() != o.getClass()) { return false; } NewsEntity that = (NewsEntity) o; if(id != that.id) { return false; } if(name != null ? !name.equals(that.name) : that.name != null) { return false; } return true; } @Override public int hashCode() { int result = id; result = 31 * result + (name != null ? name.hashCode() : 0); return result; } }NewsEntity.java
對應的 NewsEntity.hbm.xml 文件
<?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.nucsoft.hibernate.NewsEntity" table="news" schema="hibernate"> <id name="id"> <column name="id" sql-type="int(11)"/> </id> <property name="name"> <column name="name" sql-type="varchar(50)" length="50"/> </property> </class> </hibernate-mapping>NewsEntity.hbm.xml
在勾選 JPA Annotations 的情況下,生成的實體包含 JPA 註解。如:
/** * @author solverpeng * @create 2016-09-28-14:16 */ @Entity @Table(name = "news", schema = "hibernate", catalog = "") public class NewsEntity { private Integer id; private String name; @Id @Column(name = "id", nullable = false) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Basic @Column(name = "name", nullable = false, length = 50) public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object o) { if(this == o) { return true; } if(o == null || getClass() != o.getClass()) { return false; } NewsEntity that = (NewsEntity) o; if(id != null ? !id.equals(that.id) : that.id != null) { return false; } if(name != null ? !name.equals(that.name) : that.name != null) { return false; } return true; } @Override public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + (name != null ? name.hashCode() : 0); return result; } }NewsEntity.java
註意: Gennerate Separate XML per Entity 這個選項,意思是為每一個 Entity 生成一個 hbm.xml 文件。
在勾選 Genernate JPA Annotations 選項的情況下,可以不勾選它。但是如果沒有勾選 Genernate JPA Annotations 選項,需要勾選 Gennerate Separate XML per Entity。
8.總結:
介紹了 Intellij Idea 下如何新建 Hibernate 項目以及如何生成配置信息。事實上,Idea 還能完成表和表之間關係的處理,和 hql 語句的測試,關於這兩個方面,在以後的文章中進行探索說明。
同樣也介紹了 Module 的新建。
9.題外篇
如何添加別的框架?如上面添加了 Hibernate 框架,那麼如何再添加 Spring 框架呢?
看圖說話,可以通過此種方式來添加。