-
Notifications
You must be signed in to change notification settings - Fork 0
/
AbstractAuditable.java
76 lines (67 loc) · 2.45 KB
/
AbstractAuditable.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package maquina.hibernate.dominio;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.MappedSuperclass;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.GenerationTime;
import org.hibernate.annotations.GeneratorType;
import org.hibernate.annotations.UpdateTimestamp;
import lombok.Getter;
import lombok.Setter;
import maquina.hibernate.audit.AuditManager;
/**
* Clase creada para que las tablas que queramos auditar puedan extender de ella
* y guarde información útil sobre ellas, solo serviría para acciones que no
* sean borrados físicos , ya que con estos se borra toda la entidad de base de
* datos para llevar un historico completo debemos usar otra manera:
* <a href="https://www.baeldung.com/database-auditing-jpa">como esta</a>
* <p>
* <a href=
* "https://vladmihalcea.com/how-to-emulate-createdby-and-lastmodifiedby-from-spring-data-using-the-generatortype-hibernate-annotation/">Más
* info aquí</a>
*
* @author MaQuiNa1995
*
*/
@Getter
@Setter
@MappedSuperclass
public abstract class AbstractAuditable implements Serializable {
/**
* Marcamos la columna para que cada vez que se haga
* {@link GenerationTime#INSERT} vaya a {@link AuditManager} y meta el usuario
* que ha tocado la entidad
*/
@GeneratorType(type = AuditManager.class,
when = GenerationTime.INSERT)
protected String creadoPor;
/**
* Marcamos la columna para que salga el log de la fecha y hora en la que se
* creó la entidad esta anotación soporta múltiples tipos de fecha
* <p>
* <a href=
* "https://stackoverflow.com/questions/221611/creation-timestamp-and-last-update-timestamp-with-hibernate-and-mysql#221827">Mas
* Info</a>
*/
@CreationTimestamp
protected LocalDateTime fechaCreacion;
/**
* Marcamos la columna para que cada vez que se haga cualquier operación
* {@link GenerationTime#ALWAYS} vaya a {@link AuditManager} y meta el usuario
* que ha tocado la entidad
*
*/
@GeneratorType(type = AuditManager.class,
when = GenerationTime.ALWAYS)
protected String modificadoPor;
/**
* Marcamos la columna para que salga el log de la fecha y hora en la que se
* modificó la entidad esta anotación soporta múltiples tipos de fecha
* <p>
* <a href=
* "https://stackoverflow.com/questions/221611/creation-timestamp-and-last-update-timestamp-with-hibernate-and-mysql#221827">Mas
* Info</a>
*/
@UpdateTimestamp
protected LocalDateTime fechaModificacion;
}