程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> hibernate初步,hibernate

hibernate初步,hibernate

編輯:JAVA綜合教程

hibernate初步,hibernate


Hibernate開發步驟
1.新創建工程並且導入相關的包

主要是hibernate、mysql相關的JAR包。

注意:新導入的hibernate相關的JAR包是否與你當前所使用的jdk版本是否兼容,且不要忘記導入數據庫的驅動JAR包。如5.2的hibernate需要jdk1.8才能編譯。


2.持久化類POJO的設計-------javabean與數據庫表相關聯的類。

public class UserInfo {
    private int id;
    private String name;
    private String password;
    private String role;
    public UserInfo() {
        
    }
    public UserInfo(String name, String password, String role) {
        super();
        this.name = name;
        this.password = password;
        this.role = role;
    }
    public UserInfo(int id, String name, String password, String role) {
        super();
        this.id = id;
        this.name = name;
        this.password = password;
        this.role = role;
    }
    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;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    @Override
    public String toString() {
        return "UserInfo [id=" + id + ", name=" + name + ", password="
                + password + ", role=" + role + "]";
    }
    
}

 


3.編寫*.hbm.xml映射文件-----主要是描述實體類與數據庫中表之間的映射關系。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="net.togogo.pojo.UserInfo" table="t_user"><!-- 指定數據庫中的表名 -->
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <!-- 主鍵值生成方式 -->
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String"><!-- property對應與POJO中的屬性 -->
            <column name="name" length="20" />    <!-- column對應與數據庫中表的屬性 -->
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="20" />
        </property>
        <property name="role" type="java.lang.String">
            <column name="role" length="20" />
        </property>
    </class>
</hibernate-mapping>

 


4.編寫hibernate配置文件-------數據庫的連接信息和顯示底層sql語句。

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
<hibernate-configuration>
    <session-factory>
        <!-- 數據庫連接方言信息 -->
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        
        <!-- 你所使用的數據庫驅動為:mysql -->
        <property name="hibernate.connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        
        <!-- 你所使用的數據庫名字為:hibernate_db -->
        <property name="hibernate.connection.url">
            jdbc:mysql://localhost:3306/hibernate_db
        </property>
        
        <!-- 你所使用的數據庫賬號為:root -->
        <property name="connection.username">root</property>
        
        <!-- 你所使用的數據庫密碼為:root -->
        <property name="connection.password">root</property>
        
        <!-- 顯示底層的sql語句,開發階段設為true,項目發布階段設為false -->
        <property name="show_sql">true</property>
        <mapping resource="net/togogo/pojo/userinfo.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

 


5.使用hibernate api操作數據庫.其中又包括如下幾步。
        1)獲取 Configuration 對象。
        2)獲取 SessionFactory 對象。
        3)獲取 Session,打開事務。
        4)用面向對象的方式操作數據庫。
        5)關閉事務,關閉 Session。

 

public class HibernateUtils {
  //往數據庫中插入數據信息。
    public static void save(Object obj){
        1)獲取 Configuration 對象。 Configuration config = new Configuration(); config.configure("hibernate.cfg.xml");
        2)獲取 SessionFactory 對象。 SessionFactory sessionFactory = config.buildSessionFactory();
         3)獲取 Session Session session = sessionFactory.openSession();
         3)打開事務。 Transaction tx = session.beginTransaction();
        4)用面向對象的方式操作數據庫。 session.save(obj);
         5)關閉事務,關閉 Session。 tx.commit(); session.close(); } public static void deleteById(int id){ Configuration config = new Configuration(); config.configure("hibernate.cfg.xml"); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); UserInfo userInfo = session.get(UserInfo.class, id); session.delete(userInfo); tx.commit(); session.close(); } public static void update(Object obj){ Configuration config = new Configuration(); config.configure("hibernate.cfg.xml"); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); session.update(obj); tx.commit(); session.close(); } public static Object findObjById(Class c,Serializable id){ Configuration config = new Configuration(); config.configure("hibernate.cfg.xml"); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); Object obj = session.get(c, id); session.close(); return obj; } }

6.測試類

public class IDUQTest {

    @Test
    public void testSave(){
        UserInfo userInfo = new UserInfo("lili","123","admin");
        HibernateUtils.save(userInfo);
    }
    
    @Test
    public void testDelete(){
        HibernateUtils.deleteById(4);
    }
    
    @Test
    public void testUpdate(){
        UserInfo userInfo = (UserInfo) HibernateUtils.findObjById(UserInfo.class, 3);
        userInfo.setPassword("123456");
        HibernateUtils.update(userInfo);
    }
}

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hibernate的運行過程

Hibernate的運行過程如下:

1) 應用程序先調用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息,並用這些信息生成一個SessionFactory對象

2) 從SessionFactory對象生成一個Session對象

3) 用Session對象生成Transaction對象

4) 可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法對POJO類進行加載、保存、更新、刪除、等操作;

5) 在查詢的情況下,可通過Session對象生成一個Query對象,然後利用Query對象執行查詢操作;如果沒有異常,Transaction對象將提交這些操作到數據庫中。

 

//end

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