SpringMVC+Hibernate 入門執行個體

來源:互聯網
上載者:User

在上一篇的部落格中,為了整明白實驗室項目的架構,我簡單的闡述了springmvc的一些配置內容以及一個小執行個體。但是在學習的過程中,又碰到了另外一個架構hibernate。hibernate是一個對資料庫操作進行封裝的輕量級架構,有了它我們不需要再去寫繁雜重複的JDBC語句,也不在需要和SQL語句打交道,給我們開發帶來很大的方便。
在這篇博文中,我打算把Hibernate單獨拉出來做一個簡單的應用。這樣我們可以再執行個體的基礎上去擴充延伸我們對Hibernate的理解。廢話不多說,先看一下我們的工程結構:

對應的hibernate的jar包,有需要的點擊下載。
先從我們的設定檔講起。hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <!-- 1.SessionFactory是Hibernate中的一個類,  這個類主要負責儲存HIbernate的配置資訊,以及對Session的操作-->     <session-factory >              <!-- 2.設定資料庫的驅動程式,Hibernate在串連資料庫時,需要用到資料庫的驅動程式-->         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!-- 3.設定資料庫的串連url:jdbc:mysql://localhost/test,其localhost表示mysql伺服器名稱,此處為本機,test是資料庫名-->        <property name="hibernate.connection.url">jdbc:mysql://localhost/test?characterEncoding=UTF-8</property>        <!-- 4.串連資料庫的使用者名稱,密碼-->         <property name="hibernate.connection.username">root</property>        <property name="hibernate.connection.password">123456</property>        <!-- 5.hibernate.dialect是Hibernate使用的資料庫方言.因為hibernate是要把Java對象轉換成關聯式資料庫來描述的,而關聯式資料庫雖然有一些統一的標準,如SQL-92等,        但是實際上各資料庫如Oracle, MySQL, MS SQL Server等等為了提高效能或增加功能都提供了一些額外的標準或文法,因此,hibernate為了更好適配各種關聯式資料庫,針對每種資料庫都指定了一個方言dialect。因為我的資料庫是MySQL,所以用的是MySQL的方言-->         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>        <!-- 6.是否在後台顯示Hibernate用到的SQL語句,開發時設定為true,便於查錯,程式運行時可以在Eclipse的控制台顯示Hibernate的執行Sql語句-->        <property name="hibernate.show_sql">true</property>        <!-- 7.Hibernate在輸出sql語句的時候格式化一下,不然在控制台輸出的時候是一行  很難看 -->        <property name="hibernate.format_sql">true</property>    <!-- 8.這個就是我們要指定映射設定檔了 -->     <mapping resource="com//hibernate/test/User.hbm.xml"/>    </session-factory></hibernate-configuration>

然後再看User.hbm.xml:

<!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>    <!-- 1.name這裡填寫你的實體類的位置  table表示的是你操作的表名-->    <class name="com.hibernate.test.User" table="User_jtx">        <!-- 2. <id>元素中的<generator>用來為該持久化類的執行個體產生唯一的標識 uuid表示我們產生的id是通過一定的演算法保證id的唯一性  -->        <id name="id">            <generator class="uuid"/>        </id>        <!-- 3.注意這裡的name上的值 id,name,password 在你的User類中一定要有對應的變數,不然會報錯。        colume是指name對應的參數名在資料庫中產生的欄位,好比如我這裡的name的值是name,column是nameTest,那麼在產生表的時候就會是nameTest欄位,如果不設定column的參數那麼欄位就是預設的name對應的值。如name=password,對應的表中的欄位就是password  -->        <property name="name" column="nameTest"/>        <property name="password"/>    </class></hibernate-mapping>

接著看一下我們的實體類
User.java:

package com.hibernate.test;/*很簡單一個實體類。  注意的一點是:這裡的變數在User.hbm.xml中設定的變數要對應起來*/public class User {    private String id;    private String name;    private String password;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

到這裡設定檔和實體類都已經部署好,下面我們測試一下。先把表產生。
ExportDB.java:

package com.hibernate.test;import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;public class ExportDB {    public static void main(String[] args) {        /*預設讀取hibernate.cfg.xml檔案。如果要自訂檔案也可以這樣寫configuration.configure("/XXX/XXX/hibernate.cfg.xml");*/        Configuration cfg = new Configuration().configure();        SchemaExport export = new SchemaExport(cfg);        // 第一個true 在控制台列印sql語句,true 匯入sql語句到資料庫,即可執行         export.create(true, true);    }}

運行完這個程式會在eclipse控制台上輸出:

在看資料庫User_jtx這個表被產生了。

表已經產生了,我們再往這個表上添加一點資料,Client.java:

package com.hibernate.test;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class Client {    public static void main(String[] args) {        //讀取hibernate.cfg.xml檔案        Configuration cfg = new Configuration().configure();        //建立SessionFactory        SessionFactory factory = cfg.buildSessionFactory();        //取得session        Session session = null;        try {            session = factory.openSession();            //開啟事務            session.beginTransaction();            User user = new User();            user.setName("李四");            //儲存User對象            session.save(user);             //提交事務            session.getTransaction().commit();        }catch(Exception e) {            e.printStackTrace();            //復原事務            session.getTransaction().rollback();        }finally {            if (session != null) {                if (session.isOpen()) {                    //關閉session                    session.close();                }            }        }    }}

在控制台上輸出:

再看資料庫資料添加成功。

至此hibernate的執行個體已經全部說明,在項目中springmvc和hibernate經常被整合起來一起使用,實驗室的項目也是這樣做,我單獨的將兩塊架構拉出來簡單的學習一下,在該基礎上去延伸我對這兩個架構的認識。希望後面的學習可以把兩個架構整合到一起。有錯誤的地方希望各位大神指出批評。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.