Hiberante框架
1: hibernate是一個 開源的 輕量級的 持久層 ORM框架 ,apache的產品
什麼是 ORM
Objcet Relation Mapping
對象 關係 映射
面向對象 面向關係
類 表
對象 表的行(記錄 )
屬性 表的列(字段)
2: 搭建一個 hibernate框架
1: 創建javaproject項目
2: 導入jar包 hibernate-release-4.2.19.Final\lib\required 下所有的 jar包
還需要導入一個jar包 數據庫 的 驅動包
3:編寫hibernate的核心配置文件
4定義實體類(entity,pojo,domain,perudre)
5 編寫實體類的配置文件(實體類名.hbm.xml) --對象關係映射文件
作用:描述類和數據庫中表之間的關係
6 編寫hibernate代碼完成增刪改查的操作
內置映射類型
1).Java基本類型的Hibernate映射類型
Java類型 Hibernate映射類型 標準SQL類型 大小和取值範圍
int/Integer int/integer INTEGER 4Byte
long/Long long BIGINT 8Byte
short/Short short SAMLLINT 2Byte
byte/Byte byte TINYINT 1Byte
float/Float float FLOAT 4Byte
double/Double double DOUBLE 8Byte
BigDecimal big_decimal NUMBERIC Numeric(8,2)
char/Character/String character CHAR(1) 定長字符
String string VARCHAR 變長字符
boolean/Boolean boolean BIT 布爾類型
boolean/Boolean yes/no CHAR(1)('Y'/'N') 布爾類型
boolean/Boolean true/false CHAR(1)('T'/'F') 布爾類型
2). Java時間和日期類型的Hibernate映射類型
Java類型 Hibernate映射類型 標準SQL類型 描述
java.util.Date/java.sql.Date date DATE 日期,yyyy-mm-dd
java.util.Date/java.sql.Time time TIME 時間,hh:mm:ss
java.util.Date/java.sql.Timestamp timestamp TIMESTAMP 時間戳,yyyymmddhhmmss
java.util.Calendar calendar TIMESTAMP 同上
java.util.Calendar calendar_date DATE 日期,yyyy-mm-dd
3). Java 大對象類型的Hibernate映射類型
Java類型 Hibernate映射類型 標準SQL類型 MySql類型 Oracle類型
byte[] binary VARBINARY/BLOB BLOB BLOB
String text CLOB TEXT CLOB
serializable 實現serializable接口的java類 VARBINARY/BLOB BLOB BLOB
java.sql.Clob clob CLOB TEXT CLOB
java.sql.Blob blob BLOB BLOB BLOB
自動建表的類型
create : 每次運行都會 創建一個新的表 如果表存在 則會刪除之前的表
create-drop : 每次運行都會創建新的表 SessionFactory關閉後 則會刪除該表
update : 每次運行 檢查表結構 是否發生變化,如果改變 則更新表,如果表不存在 則創建表
validate : 不自動創建表 如果表不存在 則 拋異常
hibernate中對象的 三種狀態
臨時態 : 1:對象 主鍵屬性 爲 null
2:該對象和 session沒有關聯
3:該對象 和數據庫中的數據沒有對應的關係
持久態 : 1:該對象位於 session中 和session有直接關聯
2:該對象和數據庫中過的數據 有直接的對應關係
3:該對象的屬性發生變化的時候 ,數據庫中的數據同步更新
遊離態 : 1: 對象不位於session中 , 該對象 和session沒有關聯
2: 對象 跟數據庫中數據 有可能有對應關係
3: 如果吧 遊離態對象和session進行關聯 那麼 該對象就直接轉換成
持久態
緩存 : cache hibernate緩存
是介於 數據庫 和 程序之間的 將數據庫的內容 備份了一份 保存到內存的一個 容器中
如果下次再進行相同數據的查詢的時候 之間讀取 備份的內容 減少 對數據的 訪問 從而提供運行效率 一級緩存
session緩存 hibernate內置 緩存 不能卸載
緩存的範圍 : 和當前的session有關係 ,如果seesion關閉後 緩存失效 ,
一級緩存 依賴session的生命週期
二級緩存
sessionFactory緩存 應用緩存 需要第三方插件 可插拔的緩存
所有的 session 共享該緩存 該緩存依賴 sessionFactory
使用二級緩存
1: 引入 jar包 \hibernate-release-4.2.19.Final\lib\optional\ehcache 所有的jar包
2: 在 hibernate.cof.xml中進行開啓二級緩存
<property name="hibernate.cache.use_second_level_cache">true</property>
3: 指明 使用二級緩存的類名
<!-- 加載二級緩存 -->
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
4: 配置二級緩存
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
5:聲明是 那個類 需要使用二級緩存
<!-- 聲明那個類使用二級緩存 -->
<class-cache usage="read-only" class="com.hibernate02.entity.Customer"/>