Lifecycle 介面、Validatable 介面


可以在實體物件定義時實作Lifecycle介面,這個介面定義如下:
package org.hibernate.classic;

import java.io.Serializable;

import org.hibernate.CallbackException;
import org.hibernate.Session;

public interface Lifecycle {
    public static final boolean VETO = true;
    public static final boolean NO_VETO = false;

    public boolean onSave(Session s) throws CallbackException;
    public boolean onUpdate(Session s) throws CallbackException;
    public boolean onDelete(Session s) throws CallbackException;
    public void onLoad(Session s, Serializable id);
}

當物件實作Lifecycle介面時,會在save()、update()、delete()、load()等方法執行之前呼叫對應的onSave()、 onUpdate()、onDelete()與onLoad(),其中onSave()、onUpdate()、onDelete()與onLoad() 若傳回true或丟出CallbackException,則對應的操作中止。

可以在實體物件定義時實作Validatable介面,其定義如下:
package org.hibernate.classic;

public interface Validatable {
    public void validate() throws ValidationFailure;
}

如果定義時實作了Validatable介面,當物件被持久化之前會呼叫validate()方法,如果丟出ValidationFailure,則驗證 失敗,物件的資料不會儲存至資料庫中。