Java 在hibernate实体中保留DB约束好吗
当我重构一个代码库时,我通过hibernate注释,比如Java 在hibernate实体中保留DB约束好吗,java,mysql,hibernate,Java,Mysql,Hibernate,当我重构一个代码库时,我通过hibernate注释,比如 @Column(name = "personal_email", nullable = true, length = 64) private String personalEmail; 在用户实体中。。。如果personalEmail超过64个字符,则实际上存在数据截断错误 我个人认为这样保留注释是一种糟糕的做法。我认为我们不必通过数据库实体元信息破坏代码 我的方法是删除长度和可为空的注释名称,并让DB在任何违反约束的情况下发出通知 我
@Column(name = "personal_email", nullable = true, length = 64)
private String personalEmail;
在用户实体中。。。如果personalEmail超过64个字符,则实际上存在数据截断错误
我个人认为这样保留注释是一种糟糕的做法。我认为我们不必通过数据库实体元信息破坏代码
我的方法是删除长度和可为空的注释名称,并让DB在任何违反约束的情况下发出通知
我认为保留这种注释的唯一优点是它不会将错误数据传播到DB级别
我想知道你的建议
无论如何,我会在DB中更改personalEmail的列宽。这取决于您更信任哪个系统。Hibernate(Java)或您的数据库 也许这份清单会对你有所帮助 Hibernate的优势
- 就是在同一个代码库中跟踪约束。不会在两个系统之间切换以检查它们
- 请随时为用户和您自己的日志文件提供更详细的信息
- 必须编译每个约束修改。没有可能的运行时更改,因此需要更多的维护(服务器重启等)
- 您可以从JavaEE/JavaSE更改为任何其他系统
- 如有必要,在运行时进行约束更改(请注意,不建议这样做)
- 不在同一个代码库中。违规行为可能很难发现
- 用Java编写更多代码来翻译更具体的用户信息。数据库日志对用户不友好