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
  • Configuration Object : Hibernateの設定(せってい) プロパティを保持(ほじ) します

    • Two Components
      • Database Connection
      • class映射(マッピング)設定(せってい)
  • SessionFactory Object : Configuration Objectから実例(インスタンス) () されます

    • client : ConnectionProvider
    • Holds second-level cache(optional)
    • can one SessionFactory per database
  • Session Object :

ApplicationとDBの(あいだ) のインターフェースとして() なすことができます
  • Short-Lived Object : この物件(オブジェクト) (Factoryでもある)には以下(いか)(ふく) まれます

    • JDBC Connection
    • org.hibernate.Session interface provides methods
      • insert
      • update
      • delete
      • First-Level Cache of data
  • Transaction interface :

SQLまたはHQLを使用(しよう) して永続(えいぞく) オブジェクトを操作(そうさ) します(作成(さくせい) 、データ取得(しゅとく) など)
  • Query interface :
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を提供(ていきょう)