Skip to content

zaharchenko-evgeny/hibernate-soft-delete

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hibernate soft deletion

Soft deletion is a widely used pattern applied for business applications. It allows you to mark some records as deleted without actual erasure from the database. Effectively, you prevent a soft-deleted record from being selected, meanwhile all old records can still refer to it.

Library available in Maven central repository. Coordinates: io.github.zaharchenko-evgeny:hibernate-softdelete:0.0.1

Usage

Hibernate soft deletion provides a few ways to add soft deletion to Hibernate entities.

All soft deleted entities should have @SoftDelete annotation.

Soft delete column can be declared in

  1. @SoftDelete annotation with column or property name

Example:

@Entity
@SoftDelete(column = "DELETED_AT", type = Date.class)
public class Clinic {

    @Id
    private Long id;

    private String name;
  1. @SoftDeleteColumn annotation on entity property

Example

@Entity
@SoftDelete
public class Owner {

    @Id
    private Long id;

    private String name;

    @SoftDeleteColumn
    @Column(nullable = false)
    private Boolean isDeleted = false;

Soft deleted column supported following column types:

  • Date - soft deletion will be marked with current date
  • Boolean - true if entity was soft deleted
  • Integer - 1 if entity was soft deleted
  • String - 'deleted' is entity was soft deleted

If an entity annotated with @SoftDeleted it is equal that entity has SQLDelete(sql='UPDATE <entity_table> SET <soft delete column> = true WHERE <entity id> = ?') and @Where(clause='<soft delete column> is null') Hibernate annotations

This library was tested with Hibernate 5.6.x

About

Hibernate util to provide soft deletion for entitties

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages