學習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的一些簡單的增刪改查操作,由於所寫出的操作方法過於簡單,不能進行復雜的操作,所以企業開發中基本不會使用 ,僅僅作爲學習該框架之前的瞭解,之後會更新利用該框架進行復雜一些的數據庫操作
 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章