首頁 > 軟體

Intellij IDEA 15 下新建 Hibernate 專案及新增設定

2020-06-16 17:31:10

1.說明:Intellij 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.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>

在勾選 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;
    }
}

注意: 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 框架呢?

看圖說話,可以通過此種方式來新增。

使用IntelliJ IDEA 13搭建Android整合式開發環境圖文教學 http://www.linuxidc.com/Linux/2015-09/123416.htm

IntelliJ IDEA 12 建立Web專案圖文詳細教學 http://www.linuxidc.com/Linux/2013-05/84213.htm

用IntelliJ IDEA開發Android程式圖文教學 http://www.linuxidc.com/Linux/2013-03/81471.htm

IntelliJ IDEA 12開發haXe NME應用設定指南 http://www.linuxidc.com/Linux/2013-01/77227.htm

IntelliJ IDEA執行Play Framework的test mode http://www.linuxidc.com/Linux/2013-07/87694.htm

Ubuntu 13.04 安裝IntelliJ IDEA 12 http://www.linuxidc.com/Linux/2013-11/93014.htm

IntelliJ IDEA 12建立Maven管理的Java Web專案(圖解) http://www.linuxidc.com/Linux/2014-04/99687p2.htm

IntelliJ IDEA 常用快捷鍵列表及技巧大全  http://www.linuxidc.com/Linux/2015-04/116398.htm 


IT145.com E-mail:sddin#qq.com