日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate基础学习(二)—Hibernate相关API介绍

發布時間:2023/12/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate基础学习(二)—Hibernate相关API介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Hibernate的核心接口

???? 所有的Hibernate應用中都會訪問Hibernate的5個核心接口。

???? (1)Configuration接口: 配置Hibernate,啟動Hibernate,創建SessionFactory對象。

???? (2)SessionFactory接口: 初始化Hibernate,創建Session。

???? (3)Session接口: 負責保存、更新、刪除、加載和查詢對象。

???? (4)Transaction接口: 管理事務。

???? (5)Query和Criteria接口: 執行數據庫查詢。

????

?

1.Configuration接口

???? Configuration對象用于配置并且根啟動Hibernate。Hibernate應用通過Configuration實例來獲取對象-關系映射文件中的元數據,以及動態配置Hibernate的屬性,然后創建SessionFactory實例。

Configuration 類負責管理 Hibernate 的配置信息。如下:?
Hibernate 運行的底層信息: 數據庫的URL、用戶名、密碼、JDBC驅動類,數據庫Dialect,數據庫連接池等(對應 hibernate.cfg.xml 文件)。?
持久化類與數據表的映射關系: (*.hbm.xml 文件)。

創建Configuration的兩種方式:

???? 方式1: 屬性文件-hibernate.properties

Configuration cfg = new Configuration();

???? 方式2: XML文件-hibernate.cfg.xml

Configuration cfg = new Configuration().configure();

???? configure()方法還支持帶參數的訪問。

File file = new File(“simpleit.xml”); Configuration cfg = new Configuration().configure(file);

?

2.SessionFactory接口

??? 一個SessionFactory實例對應一個數據存儲源,應用從SessionFactory獲得Session實例。SessionFactory有以下特點:

(1)它是線程安全的。這意味著它的同一個實例可以被應用的多個線程共享。

(2)它是重量級的。這意味著不能隨意的創建或銷毀它的實例,如果應用只訪問一個數據庫,只需要創建一個SessionFactory實例,在應用初始化的時候創建該實例。如果應用同時訪問多個數據庫,則需要為每個數據庫創建一個單獨的SessionFactory實例。

???? 之所以稱SessionFactory是重量級的是因為它需要一個很大的緩存,用來存放預定義的SQL語句及映射元數據等。用戶還可以為SessionFactory配置一個緩存插件,這個緩存插件被稱為Hibernate的第二級緩存,該緩存用來存放被工作單元讀過的數據,其他工作單元可能會重用這些數據,因此緩存中的數據能夠被所有的工作單元共享。一個工作單元通常對應一個數據庫事務。

?

3.Session接口

???? Session接口是Hibernate使用最廣泛的接口。Session也被稱為持久化管理器,它提供了和持久化相關的操作,如保存、更新、刪除、加載和查詢對象。

Session有以下特點:

(1)不是線程安全的。因此在設計時,應該避免多個線程共享同一個Session實例。

(2)Session實例是輕量級的。所謂輕量級指的是它的創建和銷毀不需要消耗太大的資源。這意味這在程序中可以經常的創建或銷毀Session對象,如為每個客戶請求分配單獨的Session實例。

???? Session有一個緩存,被稱為Hibernate的第一級緩存,它存放在當前工作單元加載的對象。每個Session實例都有自己的緩存,這個Session實例的緩存只能被當前工作單元訪問。

?

4.Transaction接口

???? Transaction接口是Hibernate數據庫事務接口,它對底層的事務接口做了封裝,底層事務接口包括:

???? (1)JDBC API

???? (2)JTA(Java Transaction API)

???? (3)CORBA(Common Object Request Broker Architecture )API

???? Hibernate應用可以通過一致的Transaction接口來聲明事務,這有助于應用在不同環境或容器中移植。

????

?

5.Query和Criteria接口

???? Query和Criteria接口是Hibernate的查詢接口,用于向數據庫查詢對象,以及控制執行查詢的過程。Query實例包裝了一個HQL查詢語句,HQL查詢語句與SQL查詢語句有些相似,但HQL查詢語句是面向對象的,它引用類名和類的屬性名,而不是表名和字段名。Criteria接口完全封裝了基于字符串形式的查詢語句,比Query接口更加面向對象,Criteria接口擅長執行動態查詢。

?

二、主配置文件

???? Hibernate配置文件主要用于配置數據庫連接Hibernate運行時所需的各種屬性

<?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><!-- SessionFactory相當于連接池的配置 --><session-factory><!-- 基本四項 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><!-- Hibernate 的基本配置 --><!-- Hibernate 使用的數據庫方言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 運行時是否打印 SQL --><property name="show_sql">true</property><!-- 運行時是否格式化 SQL --><property name="format_sql">false</property><!-- 是否自動創建表create: 每次加載hibernate時都會刪除上一次的生成的表,然后根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行。update: 表不存在就創建,不一樣就更新,一樣就什么都不做。create-drop: 初始化時創建表,SessionFactory執行clost()時刪除表。validate:驗證表結構是否一致,如果不一致就拋異常。--><property name="hbm2ddl.auto">update</property><!-- 添加映射文件 --><mapping resource="com/kiwi/domain/User.hbm.xml" /></session-factory></hibernate-configuration>

常見屬性

(1)show_sql: 運行時是否打印sql語句。

(2)format_sql: 運行時是否格式化sql語句。

(3)hbm2ddl.auto: 是否自動創建表,它有四個取值。

????????????? create: 先刪除表,然后再新建表,容易丟失數據。

???????????? update: 表不存在時就創建,表結構不一樣時就更新,否則不做任何操作。

?????? create-drop: 初始化時創建表,SessionFactory關閉時刪除表。

?????????? validate: 驗證表結構是否一致,如果不一致就報錯。

?

三、生成表

???? 生成表結構有兩種方式:

???? (1)配置hbm2ddl.auto屬性在主配置文件中

???? (2)使用SchemaExport工具類。

@Testpublic void testExport(){Configuration config = new Configuration().configure();SchemaExport se = new SchemaExport(config);/** 第一個參數: 是否把DDL語句打印的控制臺* 第二個參數: 是否讓數據庫執行*/se.create(true,true);}

轉載于:https://www.cnblogs.com/yangang2013/p/5499090.html

總結

以上是生活随笔為你收集整理的Hibernate基础学习(二)—Hibernate相关API介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。