程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Hibernate從入門到精通(二)Hibernate實例演示

Hibernate從入門到精通(二)Hibernate實例演示

編輯:關於JAVA

上篇Hibernate從入門到精通(一)JDBC簡介,我們主要對JDBC進行了簡單介紹和使用說明,這次我們做一個Hibernate簡單實例,通過這個實例對比Hibernate和JDBC,了解Hibernate的優勢所在。在此之前,讀者有必要了解一下Hibernate中的每個jar包的作用和每個jar文件包主要負責的工作,這裡我們不做過多的解釋。

1、導入jar文件

導入antlr-2.7.6.jar

導入commons-collections-3.1.jar

導入dom4j-1.6.1.jar

導入hibernate-jpa-2.0-api-1.0.1.Final.jar

導入hibernate3.jar

導入javassist-3.12.0.GA.jar

導入jta-1.1.jar

導入mysql-connector-java-3.1.13-bin.jar

導入slf4j-api-1.6.1.jar

這一部分沒有過多的解釋,只需要大家了解每個jar文件包的作用即可。

2、編輯實體

package com.entity;    
        
import java.util.Date;    
        
public class User {    
        
    private String id;      
    private String name;        
    private String password;        
    private Date createTime;        
    private Date expireTime;    
        
    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;    
    }      
    public Date getCreateTime() {    
        return createTime;    
    }      
    public void setCreateTime(Date createTime) {    
        this.createTime = createTime;    
    }    
        
    public Date getExpireTime() {    
        return expireTime;    
    }      
    public void setExpireTime(Date expireTime) {    
        this.expireTime = expireTime;    
    }    
}

這一步與普通的JDBC沒有太大的區別,在JDBC中我們也可以通過實體封裝需要的信息,如果你對面向對象編程有一定的了解相信不難理解。

3、創建數據庫、表

創建數據庫

創建表

顯示表結構

這一步就是一個創建數據庫的過程,與我們平常做項目使用的數據庫結構和過程也沒有區別。

4、創建實體映射文件User.hbm.xml

<?xml version="1.0"?>    
<!DOCTYPE hibernate-mapping PUBLIC     
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">    
<hibernate-mapping>    
    <class name="com.entity.User">    
        <id name="id">    
            <generator class="uuid"/>    
        </id>    
        <property name="name"/>    
        <property name="password"/>    
        <property name="createTime"/>    
        <property name="expireTime"/>    
    </class>    
</hibernate-mapping>

   從這一步開始,JDBC開始與Hibernate有一定的區別,這裡我們重點講一下User.hbm.xml的作用。User.hbm.xml的作用簡而言之就是對實體和數據庫中的表進行相呼應,保證我們對實體對象進行的操作都會在數據庫中產生與之對應響應的結果。但僅這樣的配置還有一個問題那就是我們如何將能夠將數據庫中的表與對象進行關聯。這就需要接下來的配置了。

5、創建數據庫連接和映射配置文件 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>    
    <session-factory>    
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>    
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>    
        <property name="hibernate.connection.username">root</property>    
        <property name="hibernate.connection.password">root</property>    
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>    
        <property name="hibernate.show_sql">true</property>    
             
        <mapping resource="com/entity/User.hbm.xml"/>    
    </session-factory>    
</hibernate-configuration>

這裡的重點區別在於,通過映射說明<mapping resource="com/entity/User.hbm.xml"/>我們可以將數據庫連接和映射進行聯系,也就是說通過 hibernate.cfg.xml的配置,我們就可以找到具體的實體和數據庫表對應關系。到此為止我們所有的配置就進行完畢了,接下來做一個測試。

6、創建測試文件 Client.java

package test;    
        
import java.util.Date;    
        
import org.hibernate.Session;    
import org.hibernate.SessionFactory;    
import org.hibernate.cfg.Configuration;    
        
import com.entity.User;    
        
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("NAME1");    
            user.setPassword("PWD1");    
            user.setCreateTime(new Date());    
            user.setExpireTime(new Date());    
                    
            //保存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從入門到精通(一)JDBC簡介文章中我們提到的JDBC操作的缺陷可以看出,我們向數據庫中添加一個對象只需要通過HibernateAPI中最核心的Session接口,調用save()方法即可,不需要我們在代碼中編寫SQL語句,也不需要程序員對SQL語言過多的了解,這就體現了Hibernate完全面向對象編程。

到此為止,我們已經基本了解了Hibernate的基本使用步驟,接下來我們會分別講解一些Hibernate中的一些重點概念和使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved