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

No packages published

Languages