Hibernate
Architecture
flowchart TB App[Java Application] PO[Persistence Objects] subgraph Hibernate T[Transaction] C[Configuration] SF[Session_Factory] S[Session] Q[Query] FLC[First_Level_Cache] end SLC[Second_Level_Cache] DB[(Database)] App --> PO S --> PO SF --> C S --> SLC S --> Q --> FLC Hibernate --> DB S --> SF
ConfigurationObject : Hibernateの設定 プロパティを保持 します- Two Components
- Database Connection
classの映射 を設定
- Two Components
SessionFactory Object :
ConfigurationObjectから実例 化 されます- client :
ConnectionProvider - Holds second-level cache(optional)
- can one
SessionFactoryper database
- client :
SessionObject :
ApplicationとDBの間
のインターフェースとして見
なすことができます
Short-Lived Object : この物件 (Factoryでもある)には以下 が含 まれます
- JDBC Connection
org.hibernate.Sessioninterface provides methods- insert
- update
- delete
- First-Level Cache of data
Transactioninterface :
SQLまたはHQLを使用
して永続
オブジェクトを操作
します(作成
、データ取得
など)
Queryinterface :
SQLまたはHQLを使用
して永続
オブジェクトを操作
します(作成
、データ取得
など)
Criteria:
Lifecycle
flowchart TB O((Object)) TS(Transient_State) PS(Persistent_State) DS(Detached_Sate) RS(Removed_Sate) E((End)) O --->|New isntance of entiy| TS O --->|get,load| PS TS --->|save,persist,saveOrUpdate,update| PS TS --->|Garbage| E PS --->|delete| RS PS --->|detach,close,clear,evict| DS DS --->|save,saveOrUpdate,merge,lock| PS DS --->|Garbage| E
Transient State
- 物件 はHibernateセッションに関連 付 けられていません
- 物件 はまだデータベースに永続 化 されていない単純 なJava物件 (POJO)です
Persistent State
物件
がHibernateセッションに関連
付
けられると、永続
状態
に入
ります。この状態
では、物件
は特定
のHibernateセッションに関連
付
けられ、Hibernateによって積極的
に管理
されます。物件
に加
えられた変更
はHibernateによって追跡
され、セッションがフラッシュされるとデータベースに永続
化
されます。
Two sub-states of the persistent state
Transient->Persistent State
Persistent->Detached State
Detached State
Removed State
First-Level Cache
Pros
- JDBCのboiler-plate codeを削減
- Hibernate Cacheがより良 いperformanceを提供
- Lazy Initをサポートするために Proxy Objectを提供