0
衆所周知,Hibernate使用髒檢查 - 也就是說,在DB中,它只更改程序實體中已更改的字段。如何知道哪些字段已更改?我可以獲得舊的價值嗎?Hibernate中的髒檢查
衆所周知,Hibernate使用髒檢查 - 也就是說,在DB中,它只更改程序實體中已更改的字段。如何知道哪些字段已更改?我可以獲得舊的價值嗎?Hibernate中的髒檢查
org.hibernate.event.spi
中有一系列事件監聽器SPI,您可以在SessionFactory
的構建過程中執行和註冊,您可以在其中獲得所詢問的狀態信息。例如:
public class MyPreUpdateEventListener implements PreUpdateEventListener {
@Override
public boolean onPreUpdate(PreUpdateEvent event) {
Object[] newState = event.getState();
Object[] oldState = event.getOldState();
/* from this point, you'd need to determine the differences yourself */
}
}
不,它不這樣做。至少不是默認的。不,它不暴露實體的舊狀態。如果你需要這樣做,你需要自己做。 –
@JBNizet舊狀態可以通過事件監聽器來使用。 – Naros