«Мягкое» удаление в Hibernate

«Мягкое» удаление — это когда запись не удаляется физически из базы, а только помечается как удалённая.

При использовании Hibernate вы можете реализовать это сами, а можете использовать трюк с аннотациями @org.hibernate.annotations.SQLDelete и @org.hibernate.annotations.Where.

Аннотация @SqlDelete позволяет задать свой SQL, который будет использоваться при удалении записи с помощью Hibernate.

Аннотация @Where позволяет задать дополнительное условие, которое будет всегда добавляться при выборке данных с помощью Hibernate.

Пример:

 

 

Недостаток этого метода в том, что @SqlDelete не использует настройку hibernate.default_schema, поэтому её придётся либо задавать прямо, либо какими-нибудь другими способами.

Недостаток @Where в том, что нет никакого способа его отключить. Вам придётся использовать нативный SQL, если понадобится получить удалённые записи.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *