1. 程式人生 > >學習Hibernate框架--框架搭建及簡單實用

學習Hibernate框架--框架搭建及簡單實用

在學習Hibernate框架之前首先來了解一下什麼是Hibernate框架以及為什麼要使用它

Hibernate是

一個開源的物件關係對映框架 對JDBC進行了非常輕量級的物件封裝 將JacaBean物件和資料庫的表建立對應關係 它是一個優秀的Java持久化層解決方案 是當今主流的物件——關係對映工具 它簡化了JDBC繁瑣的編碼,將資料庫的連線資訊都放置在配置檔案中 來對比一下傳統的JDBC,會發現傳統JDBC有一些缺點: 開發效率低 程式碼冗餘(比如pstmt的setXX方法,方法引數冗餘的getXX方法,而如果POJO的屬性很多,則程式碼增加) 重複性工作很多 所以使用Hibernate框架來進行持久層的操作是很有必要的,接下來了解一下它的使用步驟
1、下載jar包並部署,可以去官網上下載,地址:www.hibernate.org 2、配置一個關於關聯實體類的xml檔案,以User類為例(User.hbm.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- package對應實體類的包 -->
<!--實體類的對映檔案  -->
<hibernate-mapping>
<!--對應實體類關聯資料表,name代表類的路徑  -->
	<class name="com.entity.User"	table="h_user">
	<!--id標籤代表主鍵,name表示實體類的屬性,column表示資料庫中的列,type表示型別  -->
		<id name="id"	column="id"	type="java.lang.Integer">
		<!--生成主鍵策略  -->
			<generator class="sequence">
				<!--指定序列的名稱  -->
				<param name="sequence">seq_h_user</param>
			</generator>
		</id>
		<!-- 其他列的設定,設定方式同主鍵一樣 -->
		<property name="name"	column="name"	 type="java.lang.String"></property>
		<property name="pwd"	column="pwd"	type="java.lang.String"></property>
	</class>
</hibernate-mapping>
3、建立Hibernate配置檔案 該檔案用於配置資料庫連線;執行時所需的各種屬性;預設的檔名為“hibernate.cgf.xml”
<?xml version="1.0" encoding="UTF-8"?>
<!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="hbm2ddl.auto">update</property>
		<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<property name="connection.username">hibernate</property>
		<property name="connection.password">123456</property>
		<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<property name="hibernate.c3p0.max_size">20</property>
		<property name="hibernate.c3p0.min_size">1</property>
		<property name="hibernate.c3p0.timeout">5000</property>
		<property name="hibernate.c3p0.max_statements">100</property>
		<property name="hibernate.c3p0.idle_test_period">3000</property>
		<property name="hibernate.c3p0.acquire_increment">2</property>
		<property name="hibernate.c3p0.validate">true</property>
		<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
		<property name="show_sql">true</property>
		<mapping resource="com/jredu/entity/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

接下來就可以使用Hibernate來操作資料庫啦,總的來說有這麼7個步驟:
package com.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

import com.entity.User;

public class UsrTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		1、讀取並解析配置檔案
		Configuration cfg=new Configuration().configure();
//		註冊服務物件(必須執行此步驟,否則第二步的buildSessionFactory方法無法執行)
		StandardServiceRegistry registry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//		2、解析對映檔案,建立SessionFactory
		SessionFactory factory=cfg.buildSessionFactory();
//		3、開啟session
		Session session=factory.openSession();
//		4、增刪改需要開啟事務
		Transaction tran=session.beginTransaction();
//		(1)新增一條資料
//		User user=new User();
//		user.setName("admin");
//		user.setPwd("123");
////		5、資料庫操作
//		session.save(user);
//		(2)更新資料
//		User user=new User();
//		user.setId(4);
//		user.setName("ad");
//		user.setPwd("111");
//		session.update(user);
//		(3)刪除資料
//		User user=new User();
//		user.setId(4);
//		session.delete(user);
//		(4)查詢資料
		User user=(User) session.get(User.class,5);
		6、提交事務
		tran.commit();
//		7、關閉session
		session.close();
		System.out.println("操作成功");
	}

}
由於第二步的操作版本不支援,所以得先註冊服務物件,程式碼中給出了註釋 上面就是使用Hibernate的一些簡單的增刪改查操作,由於所寫出的操作方法過於簡單,不能進行復雜的操作,所以企業開發中基本不會使用 ,僅僅作為學習該框架之前的瞭解,之後會更新利用該框架進行復雜一些的資料庫操作