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