學習Hibernate框架--框架搭建及簡單實用
阿新 • • 發佈:2019-01-29
在學習Hibernate框架之前首先來了解一下什麼是Hibernate框架以及為什麼要使用它
Hibernate是
一個開源的物件關係對映框架 對JDBC進行了非常輕量級的物件封裝 將JacaBean物件和資料庫的表建立對應關係 它是一個優秀的Java持久化層解決方案 是當今主流的物件——關係對映工具 它簡化了JDBC繁瑣的編碼,將資料庫的連線資訊都放置在配置檔案中 來對比一下傳統的JDBC,會發現傳統JDBC有一些缺點: 開發效率低 程式碼冗餘(比如pstmt的setXX方法,方法引數冗餘的getXX方法,而如果POJO的屬性很多,則程式碼增加) 重複性工作很多 所以使用Hibernate框架來進行持久層的操作是很有必要的,接下來了解一下它的使用步驟3、建立Hibernate配置檔案 該檔案用於配置資料庫連線;執行時所需的各種屬性;預設的檔名為“hibernate.cgf.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>
<?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的一些簡單的增刪改查操作,由於所寫出的操作方法過於簡單,不能進行復雜的操作,所以企業開發中基本不會使用 ,僅僅作為學習該框架之前的瞭解,之後會更新利用該框架進行復雜一些的資料庫操作