Java-Hibernate - EJB 註解映射

Hibernate - EJB 註解映射


轉載自:https://www.shiyanlou.com/courses/document/992


一、實驗環境說明

1. 環境登錄

無需密碼自動登錄,系統用戶名 shiyanlou,密碼 shiyanlou

2. 環境介紹

本實驗環境採用帶桌面的 Ubuntu Linux 環境,實驗中可能會用到桌面上的程序:

  • XfceTerminal: Linux 命令行終端,打開後會進入 Bash 環境,可以使用 Linux 命令;
  • Firefox:瀏覽器,可以用在需要前端界面的課程裏,只需要打開環境裏寫的 HTML/JS 頁面即可;
  • GVim:非常好用的編輯器,最簡單的用法可以參考課程 Vim編輯器
  • Eclipse:Eclipse 是著名的跨平臺的自由集成開發環境(IDE)。主要用來 Java 語言開發,但是目前亦有人通過插件使其作爲 C++ 和 Python 等語言的開發工具。

3. 環境使用

使用 GVim 編輯器輸入實驗所需的代碼,然後使用 XfceTerminal 命令行環境進行編譯運行,查看運行結果,運行後可以截圖並分享自己的實驗成果,實驗樓提供的截圖是後臺截圖,無法作弊,可以真實有效證明您已經完成了實驗。

實驗記錄頁面可以在“我的課程”中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操作的時間,如果沒有操作,系統會記錄爲發呆時間)。這些都是您學習的真實性證明。

二、前言

本次課程使用 EjB 註解映射的方式,來實現上節課的示例。企業級 JavaBean(Enterprise JavaBean, EJB)是一個用來構築企業級應用的服務器端可被管理組件。EJB 註解表達了和 Hibernate 持久化實體對象同樣的概念。

三、新建項目工程

  • 說明:Hibernate 以及其他必要文件已經內置在了實驗環境中。

(1)導入必要的 JAR 包

新建一個 Java 工程,然後引入必要的 jar 包,右擊項目工程,依次選擇 Properties->Java Build Path->Libraries->Add External JARs。Hibernate jar 包路徑爲:/home/shiyanlou/hibernate-release-4.3.9.Final/lib/required/;mysql-connector jar 包的路徑僞: /home/shiyanlou/mysql-connector-java-5.1.35-bin.jar。最後總的需要的包如下:

圖片描述信息

(2)新建實體類 User.java

與上節課示例類似,一個用戶具有:id(主鍵),以及 username、password 兩個屬性。不同的是這裏採用的 EJB 註解方式,可以看到 User 類被 @Entity 註解成實體,id 被 @Id 註解成主鍵。

@Entity 註解可以將一個類聲明爲一個實體 bean(即一個持久化 POJO 類)

@Id 註解則聲明瞭該實體 bean 的唯一標識屬性(對應數據庫主鍵 key)

package shiyanlou.hibernate.ejb3;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
// @Table(name='')
// 數據庫中默認會對應生成同名的 Table
// 如果要修改 Table 名,使用 @Table(name='')
// '' 內爲自定義的 Table 名
public class User {

    private int id;
    private String username;
    private String password;

    @Id
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

(3)配置 hibernate.cfg.xml

在 src 目錄下,新建 hibernate.cfg.xml 文件,其配置如下:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        '-//Hibernate/Hibernate Configuration DTD 3.0//EN'
        'http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd'>

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->

        <!-- 表示使用 mysql 數據庫驅動類 -->
        <property name='connection.driver_class'>com.mysql.jdbc.Driver</property>

        <!-- jdbc 的連接 url 和數據庫(使用我們之前新建的 hibernate)-->
        <property name='connection.url'>jdbc:mysql://localhost:3306/hibernate</property>

        <!-- 數據庫用戶名 -->
        <property name='connection.username'>root</property>

        <!-- 密碼(這裏爲空) -->
        <property name='connection.password'></property>

        <!-- 數據庫使用的方言 -->
        <property name='dialect'>org.hibernate.dialect.MySQLDialect</property>

        <!-- Echo all executed SQL to stdout -->
        <!-- 設置 打印輸出 sql 語句 爲真 -->
        <property name='show_sql'>true</property>

        <!-- 設置格式爲 sql -->
        <property name='format_sql'>true</property>

        <!-- 第一次加載 hibernate 時根據實體類自動建立表結構,以後自動更新表結構 -->
        <property name='hbm2ddl.auto'>update</property>         

        <!-- 映射文件 -->
        <!-- <mapping resource='shiyanlou/test/hibernate/entity/User.hbm.xml'/> -->

        <!-- 這裏是最明顯的不同,映射變成了 User 實體類 -->
        <mapping class='shiyanlou.hibernate.ejb3.User' />

    </session-factory>

</hibernate-configuration>

可以看到,最大的變化就是映射的變化,由於我們採用了 EJB 註解的方式,因此不再需要 User.hbm.xml 來完成映射,從而映射信息也從 User.hbm.xml 變成了 User 這個實體類。

四、運行

首先要確保 MySQL 數據庫中有 hibernate 這個數據庫(建立數據庫的具體方法見上一節課程),然後編寫一個測試類,UserTest.java:

(1)增

package shiyanlou.hibernate.ejb3;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import shiyanlou.hibernate.ejb3.User;

public class UserTest {

    public static void main(String[] args) {
        Configuration configuration = new Configuration().configure();
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();


        User user = new User();
        user.setId(1);
        user.setUsername('admin');
        user.setPassword('admin');

        session.save(user);

        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }

}

Eclipse 控制檯輸出:

圖片描述信息

前面提到過,數據庫中是生成同名的表,對比查看:

圖片描述信息

五、小結

本次課程我們利用 EJB 註解映射的方式來實現上一節課的內容。

六、思考

利用 EJB 註解映射,實現其他的(刪、查、改)操作。

發佈了21 篇原創文章 · 獲贊 16 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章