Java 数据库或ORM设置的SQL行创建和修改时间?
如果我想跟踪Java 数据库或ORM设置的SQL行创建和修改时间?,java,mysql,hibernate,jpa,spring-data-jpa,Java,Mysql,Hibernate,Jpa,Spring Data Jpa,如果我想跟踪mysql行的created\u和modified\u的timestamp,有两种方法 让mysql更新字段: @Column(insertable = false, updatable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") private LocalDateTime create_at; 或者使用我与spring j
mysql
行的created\u和modified\u的timestamp,有两种方法
让mysql更新字段:
@Column(insertable = false, updatable = false,
columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private LocalDateTime create_at;
或者使用我与spring jpa一起使用的orm(hibernate
):
@CreationTimestamp //or even the jpa @CreatedAt
@Temporal(TemporalType.TIMESTAMP)
private Date modification;
问题:一个的优点是什么。
orm方法的优点是独立于数据库类型(对于单元测试可能很重要)。但是orm也必须为它“拦截”持久化进程
使用当前\u时间戳
行独立于执行的代码
何时选择哪种方法有明确的界限吗?数据库方法的主要缺点是以依赖于数据库的列定义结尾
但是,使用ORM方法有一个细微的区别,即您可以在同一方法/事务中知道赋值。使用数据库方法时,除非您进行另一次查询,否则您不会知道生成的值。IMO这完全是您喜欢的