基於註解的 Hibernate 配置
Hibernate 註解和 JPA
在 hibernate.cfg.xml 中 把
<mapping resource=
改為
<mapping class="xxxx.XX"
JPA 中註解的應用
基於註解的的物件關係對映
@Entity
@Table
@Id @GenerateValue(strategy=GenerationType.AUTO)
@Temporal(日期相關)
@Temploral(TemporalType.TIMESTMP)
@Basic(普通,不新增也會預設新增為基本屬性)
@Basic(fetch=FetchType.EAGER,optional=true)
@Column
@Version(樂觀鎖)
@Transient(不做關係對映)
大物件的操作 Clob Blob @Lob
@Lob
private Clob content;//mysql 中longtings oracle Clob
@Lob
private Blob images;//mysql 中longBlob oracle Lob
@Version
private int version;
關聯對映
一對多 @OneToMany
一對一 @OneToOne
多對多 @ManyToMany
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name=”外來鍵id”)
@ManyToMany
@JoinTable(name=”third_table”,joinColnums={@JoinColumn(name=”f_id”)},inverseJoinColumn={@JoinColumn(name=”s_id”)})
對映命名查詢
(寫在實體類中)
@NamedQueries
如
@NamedQueries({@NameQuery(name=”Account.findById”,query=”from Account where id=:id”)})
@NamedQuery
Query query=session.getNameQuery(“Account.findById”);
query.setInteger(“id”,1);
query.list();
Hibernate 二級快取的註解
通過註解配置二級快取
1、匯入快取jar 和配置檔案(echache.xml)
2、hibernate.cfg.xml啟動快取
3、實體啟動快取@Cache(usage=CacheConcurrencyStrategy.READ_WRITE )設定快取策略
有5種可選的快取方案:
1,CacheConcurrencyStrategy.NONE
不適用,預設
2. CacheConcurrencyStrategy.NONSTRICT_READ_WRITE
更新不頻繁幾個小時或更長
3,CacheConcurrencyStrategy.READ_ONLY
對於不發生改變的資料使用 [size=large][/size]
4,CacheConcurrencyStrategy.READ_WRITE
基於時間戳判定機制,,對於資料同步要求嚴格的情況,使用頻繁
5,CacheConcurrencyStrategy.TRANSACTIONAL