1. 程式人生 > >hibernate實戰筆記1---初探

hibernate實戰筆記1---初探

sdf rop 開發 host .mm word 使用 tro hbm

因為在學習Spring的時候學到有關數據庫的章節的時候,提及到了hibernate的集成,可是我對hibernate技術差點兒是一點不了解。僅僅是知道它是一個orm對象映射框架,所以在初探的章節做一下hibernate的簡單了解,以及應用。順便提一句,我用的是maven加入的hibernate開發包

簡單使用hibernate的一般步驟

*創建而且編輯hibernate配置文件

該配置文件主要是用於鏈接數據庫所用,定義了數據庫的驅動程序和映射文件的位置。例如以下是一個簡單的配置

<?xml version="1.0" encoding="utf-8" ?

> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory > <property name="show_sql">true</property> <property name="connection.driver_class"> org.gjt.mm.mysql.Driver </property> <property name="connection.url"> jdbc:mysql://localhost:3306/pgwt </property> <property name="connection.username"> root </property> <property name="connection.password"> 1234 </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <mapping resource="com/springframework/hibernate/test.hbm.xml" /> </session-factory> </hibernate-configuration>


依據這個配置文件能夠看出,全部的配置信息都是包括在<hibernate-configureation>標簽之中,該配置文件和Spring的裝配bean幾乎相同,<session-factory>相應一個SessionFactory對象,期中配置的是對象中的屬性,name代表屬性的名稱<property>標簽的內容就是屬性值了,逐一了解一下

show_sql屬性是一個boolean值,代表的是在進行數據庫操作的時候是否在控制臺輸出sql語句,在調試的時候很實用

connection.driver_class代表的是數據庫的jdbc驅動程序,我這裏使用的是mysql所以就是org.gjt.mm.mysql.Driver

connection.url代表的是訪問數據庫的url

connection.username 代表的是登錄數據庫時候的用戶名

connection.password 代表的是登錄數據庫時候的密碼

dialect代表的是一種數據庫的方言。能夠為數據庫中的屬性設置一些默認值(我眼下是這麽理解的,以後再深入研究一下)我知道了一個網頁內容是數據庫相應的方言的類。能夠參考一下百度文庫地址

<mapping resource=""/>標簽是用來引用映射文件地址的,至於映射文件的內容。下文會做簡單的介紹


*創建數據庫表

簡單的創建一個user的數據庫表分別有userid,name,password字段


*創建和數據庫表相應的javaBean類

例如以下是一個簡單的javaBean

package com.springframework.hibernate;

public class User {

	private String userid;
	private String name;
	private String password;

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	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;
	}

}

*創建映射文件

映射文件裏包含了一些配置信息,代碼之後會逐一介紹一下配置信息的含義,配置文件例如以下

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="com.springframework.hibernate.User" table="user">
		<id name="userid" column="userid">
			<generator class="assigned" />
		</id>
		<property name="name" column="name" />
		<property name="password" column="password" />
	</class>
</hibernate-mapping>


在上邊的數據庫表中包含三個字段。期中userid是主鍵。然後我來逐一說一下配置文件的含義

全部的配置信息都是寫在<hebernate-mapping>標簽中,期中能夠包括多個<class>標簽,目的是為了配置javaBean與數據庫表之間的映射關系

<class>標簽中name屬性代表的是該class標簽相應的javaBean,table屬性代表該class標簽相應的數據庫表

<id> 標簽是用於映射主鍵的。user表的主鍵是userid 。name屬性是代表javaBean中屬性的名稱。column屬性代表的是數據庫表中的字段

<generator>標簽定義了生成主鍵的方式,叫做生成器。我選擇的方式是assigned。是由程序自由生成主鍵,相對還有其它集中方式,我找了一篇blog裏面說的還挺具體blog地址

<property>也是像Spring註入javaBean一樣,定義屬性所相應的數據庫表字段的引用column屬性代表的是數據庫表中的字段


*創建一個場景類(主函數)

代碼例如以下

package com.springframework.hibernate;

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

public class Client {

	public static void main(String[] args) {
		try {
			SessionFactory sf = new Configuration().configure()
					.buildSessionFactory();
			Session session = sf.openSession();
			Transaction tx = session.beginTransaction();

			for (int i = 0; i < 100; i++) {
				User newuser = new User();
				newuser.setUserid("userid" + i);
				newuser.setName("name" + i);
				newuser.setPassword("password" + i);
				session.save(newuser);
			}

			tx.commit();
			session.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

這類似是一個樣板是代碼,應該是能夠由Spring模板來替換的。

hibernate是通過SessionFactory來啟動hibernate(通過配置文件與數據連接)。session對象其中包括一些數據庫操作的方法


以上是一些使用hibernate的基本方法,了解了以上的知識就能夠繼續往下學習Spring了,以後再來完好有關hibernate的實戰筆記。


hibernate實戰筆記1---初探