Intellij Idea 15 下新建 Hibernate 項目以及如何添加配置

来源:http://www.cnblogs.com/solverpeng/archive/2016/09/28/5915823.html
-Advertisement-
Play Games

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

看圖說話,可以通過此種方式來添加。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題意不難理解,看了後就能得出下列式子: (A+C*x-B)mod(2^k)=0 即(C*x)mod(2^k)=(B-A)mod(2^k) 利用模線性方程(線性同餘方程)即可求解 模板直達車 ...
  • java中有哪些鎖 這個問題在我看了一遍<java併發編程>後盡然無法回答,說明自己對於鎖的概念瞭解的不夠。於是再次翻看了一下書里的內容,突然有點打開腦門的感覺。看來確實是要學習的最好方式是要帶著問題去學,並且解決問題。 在java中鎖主要兩類:內部鎖synchronized和顯示鎖java.uti ...
  • 所謂不同的抽象類別,實際上是指同一個物理電路,可以在不同層次上用Verilog語言來描述。如果只從行為功能的角度來描述某一電路模塊,就稱作行為模塊。如果從電路結構的角度來描述該電路模塊,就稱作結構模塊。根據抽象的級別將Verilog的模塊分為5種不同的等級: 1)系統級 2)演算法級 3)RTL級(r ...
  • 系統:Windows 7 64位系統 安裝之前,首先下載軟體: Nginx: http://nginx.org/en/download.html PHP Stable PHP 5.6.26: http://php.net/downloads.php mysql: http://dev.mysql.c ...
  • (-1)寫在前面 這兩天讀《javaweb開發王者歸來》,學到Spring的PropertyPlaceholderConfigurer時出現一個問題,我已${jdbc.name}的形式賦值給bean中的屬性,用main方法測試後,輸出屬性的值仍然是${jdbc.name}。 (0)解決問題之路 a. ...
  • 感謝原作者:Vamei 出處:http://www.cnblogs.com/vamei 怎麼能快速地掌握Python?這是和朋友閑聊時談起的問題。 Python包含的內容很多,加上各種標準庫、拓展庫,亂花漸欲迷人眼。我一直希望寫一個快速的、容易上手的Python教程,而且言語簡潔,循序漸進,讓沒有背 ...
  • 感謝原作者:Vamei 出處:http://www.cnblogs.com/vamei Java是面向對象語言。這門語言其實相當年輕,於1995年才出現,由Sun公司出品。James Gosling領導了Java的項目小組。該項目的最初只想為家電設計一門容易移植的語言。然而,在獲得了Netscape ...
  • tail命令也是一個非常常用的文件查看類的命令,今天就為大家介紹下Linux tail命令的用法。 更多Linux命令詳情請看:Linux命令速查手冊 Linux tail命令主要用來從指定點開始將文件寫到標準輸出。很多人喜歡使用tail –f 來監控日誌文件。 一、Linux tail命令格式 L ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...