Hibernate--單表對映總結
第一章 初識Hibernate
ORM 物件/關係對映(Object/Relationship Mapping)
寫SQL語句的缺點:
*不同的資料庫使用的SQL語法不同
*同樣的功能在不同的資料庫中有不同的實現方式,比如分頁
*程式過分依賴SQL對程式的移植及擴充套件,維護等帶來很大的麻煩
Hibernate是Java領域的一款開源的ORM框架技術
Hibernate對JDBC進行了非常輕量級的物件封裝
其它主流的ORM框架技術:
1.MyBatis:前身就是著名的iBatis
2.Toplink:後被oracle收購,並重新包裝為Oracle AS TopLink
3.EJB:本身是JAVAEE的規範,重量級
開發前準備:外掛Hibernate Tools for Eclipse Plugins
Jboss公司推出的一個Eclipse綜合開發工具外掛,該外掛可以簡化ORM框架Hibernate
以及JBoss Seam,EJB3等的開發工作
第一個例子:建立Hibernate的配置檔案;建立持久化類;建立物件-關係對映檔案;通過Hibernate API編寫訪問資料庫的程式碼
匯入Hibernate必須的jar包 匯入Mysql的jdbc驅動 匯入junit架包
使用Junit進行測試 @Test:測試方法 @Before:初始化方法 @After:釋放資源
第二章 Hibernate進階
hibernate.cfg.xml常用配置
hibernate.show_sql 是否把執行時的SQL語句輸出到控制檯,編碼階段便於測試
hibernate.format_sql輸出到控制檯的SQL語句是否進行排版,便於閱讀。建議設定true
hbm2ddl.auto可以幫助由java程式碼生成的資料庫指令碼,進而生成具體的表結構。create|update|create-drop|validate
hibernate.default_schema預設的資料庫
hibernate.dialect配置Hibernate資料庫方言,Hibernate可針對特殊的資料庫進行優化
<!-- 一次讀的資料庫記錄數 -->
<property name="hibernate.jdbc.fetch_size">50</property>
<!-- 設定對資料庫進行批量刪除 -->
<property name="hibernate.jdbc.batch_size">30</property>
hibernate.max_fetch_depth設定外連線抓取樹的最大深度取值. 建議設定為0到3之間
<property name="hibernate.connection.SetBigStringTryClob">true</property>
可以像操作String一樣操作CLOB
CLOB和BLOB的區別
CLOB使用CHAR來儲存資料。 如:儲存XML文件。
BLOB就是使用二進位制儲存資料。 如:儲存點陣圖。
session簡介
*hibernate執行流程
建立一個配置物件Configuration,用來讀取hibernate.cfg.xml配置文件
建立SessionFactory物件,載入相應的物件關係對映檔案
建立Session物件,相當於獲得了一個資料庫連線物件,可以執行session物件相應的方法(增刪改查)
開啟事務,執行完session的方法之後需要提交事務,最後關閉session
hibernate是對jdbc的封裝,不建議直接使用jdbc的connection運算元據庫,而是通過使用session運算元據庫。
session與connection是多對一的關係,每個session都有一個與之相對應的connection,一個connection不同時刻可以供多個session使用。
hibernate對資料的操作都是封裝在事務中,並且預設是非自動提交的方式。所以用session儲存物件時,如果不開啟事務,並且手工提交事務,物件並不會真正儲存在資料庫中。
openSession getCurrentSession
後者在事務提交或者回滾之後會自動關閉,前者openSession需要你手動關閉,如果使用openSession而沒有手動關閉,多次之後會導致連線池溢位。
openSession每次建立一個新物件。getCurrentSession使用現有的物件。
第三章 Hibernate單表操作
單一主鍵
assigned由java應用程式負責生成(手工賦值)
native由底層資料庫自動生成識別符號,如果是MySQL就是increment,如果是oracle就是sequence
基本型別
Hibernate對映型別 Java型別 描述
integer/int java.lang.Integer/int 整型
date java.util.Date/java.sql.Date 代表日期:yyyy-MM-dd
time java.util.Date/java.sql.Date 代表時間:hh:mi:ss
timestamp java.util.Date/java.sql.Timestamp 代表時間和日期:yyyymmddhhmiss
物件型別 java型別 描述
clob java.sql.Clob 大文字型別
blob java.sql.Blob 大二進位制資料檔案(音訊,視訊,圖片)
binary byte[]
text java.lang.String
Mysql不支援標準SQL的CLOB型別,在Mysql中,用text,mediumtext,longtext型別來表示超過長度為225的長文字資料。
元件屬性------實體類中的某個屬性屬於使用者自定義的類的物件
總結Hibernate開發的基本步驟:
1)編寫配置文件hibernate.cfg.xml
2)編寫實體類
3)生成對應實體類的對映檔案並新增到配置檔案中
4)呼叫API的函式並測試
相關文章
- MyBatis 結果對映總結MyBatis
- 20240712總結、檢視函式對映報錯函式
- Mybatis結果對映MyBatis
- 資料結構-對映資料結構
- mybatis高階結果對映MyBatis
- 【作業系統】頁表對映作業系統
- SQL單表查詢語句總結SQL
- Java 第9 章 : 資料表與簡單Java類對映轉換Java
- JavaScript 資料處理 - 對映表篇JavaScript
- python字元對映表和字元替換Python字元
- Form 表單提交知識的總結(全)ORM
- MyBatis從入門到精通(十一):MyBatis高階結果對映之一對多對映MyBatis
- MyBatis從入門到精通(九):MyBatis高階結果對映之一對一對映MyBatis
- PHP 使用連結串列實現對映PHP
- Spring Data JDBC: 對映無ID列的表SpringJDBC
- 對映
- Flutter Form表單控制元件超全總結FlutterORM控制元件
- python中取絕對值簡單方法總結Python
- PAT-B 1065 單身狗【對映+集合】
- Lec 07 作業系統管理頁表對映作業系統
- 結對作業總結
- JPA關係對映系列五:many-to-many 關聯表存在額外欄位關係對映
- 多重對映
- MyBatis(四) 對映器配置(自動對映、resultMap手動對映、引數傳遞)MyBatis
- Redis - 資料型別對映底層結構Redis資料型別
- Mybatis 強大的結果集對映器resultMapMyBatis
- windows域控裡,屬性和欄位對映表Windows
- NC65對單表單據查詢的結果進行排序排序
- 4.1 結對作業總結
- [非專業翻譯] Mapster - 對映前&對映後
- Hibernate中實體類對映檔案表與表的關係模版
- WSL 埠對映
- Cache對映方式
- 09 對映(mappings)APP
- MySQL簡單總結MySql
- vuex簡單總結Vue
- rust學習九.3-集合之雜湊對映表Rust
- Linux埠對映是什麼?如何進行埠對映?Linux