天天看點

Hibernate mutable 屬性分析

1、在class中聲明mutable=”false” 或 @Immutable

這意味着對該類的更新将會被忽略,不過不會抛出異常,隻允許有增加和删除操作。

在class中聲明mutable=”false”:insert=允許,delete=允許,update=不允許

2、在集合中聲明mutable=”false” 或 @Immutable

這意味着在這個集合中插入記錄或删除孤行是不允許的,否則會抛出異常。隻允許更新操作。不過,如果啟用級聯删除的話,當父類被删除時,其所有子類也将被删除,即使它是mutable的。

在集合中聲明mutable=”false”:insert=不允許,孤行删除=不允許,delete=允許,update=允許

完全地immutable?

一個類能對任何action都完全地immutable嗎?是的,對它所有的關系都設mutable=”false”(insert=not allow,delete-orphan=not allow),以及對想要immutable(update=not allow)設定mutable=”false”。現在,我們需要一個完全地immutable類,不過,如果級聯删除選項被啟用,當聲明為immutable的類的父類被删除時,該immutable類仍将一樣被删除。