У меня есть класс «Аудит», который будет содержать следующую информацию о сущности:
- Время создания
- Создано пользователем какого приложения
- Время обновлено
- Обновлено пользователем приложения
В базе данных эти поля хранятся в той же таблице, что и атрибуты сущности. Например,
Таблица USER:
CREATE TABLE USERS (
id BIGINT NOT NULL AUTO_INCREMENT,
display_name VARCHAR(30) NOT NULL,
active BOOLEAN NOT NULL DEFAULT FALSE,
created_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_user BIGINT NOT NULL DEFAULT 0,
updated_time TIMESTAMP NOT NULL DEFAULT 0,
updated_user BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
Класс ПОЛЬЗОВАТЕЛЯ:
@Entity(name="USER")
@Table(name="USERS")
public class User implements Audited {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="ID", nullable=false, updatable=false)
private long id;
@Column(name="DISPLAY_NAME", nullable=false)
@NotNull
@Size(min=5, max=30)
private String displayName;
@Column(name="ACTIVE", nullable=false)
@NotNull
private boolean active;
private Audit audit;
}
АУДИТ Класс:
public class Audit {
private Date createdTime;
private User createdByUser;
private Date updatedTime;
private User updatedByUser;
}
В каждой таблице сущностей поля аудита будут называться одинаково. Каков наилучший подход при отображении этих полей?