有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在hibernate实体中保留DB约束是好的

当我重构代码库时,我遇到了hibernate注释,比如

@Column(name = "personal_email", nullable = true, length = 64)
private String personalEmail;

用户实体中。。。实际上,如果personalEmail超过64个字符,就会出现数据截断错误

我个人认为,像这样保留注释是一种糟糕的做法。我认为我们不必通过数据库实体元信息破坏我们的代码

我的方法是删除长度和可为空的注释名称,并在任何违反约束的情况下让DB通知

我认为保留这种注释的唯一优点是它不会将错误数据传播到DB级别

我想知道你的建议

不管怎样,我会在DB中更改personalEmail的列宽


共 (1) 个答案

  1. # 1 楼答案

    这取决于你更信任哪个系统。Hibernate(Java)或数据库

    也许这份清单会对你有所帮助

    冬眠的优势

    • 就是在同一个代码库中跟踪约束。这两个系统之间不会切换来检查它们
    • 请随时为用户和您自己的日志文件提供更详细的信息

    对冬眠不利

    • 必须对每个约束修改进行编译。没有可能的运行时更改,因此需要更多维护(服务器重启等)

    数据库的优势

    • 您可以从JavaEE/JavaSE更改为任何其他系统

    • 如有必要,在运行时进行约束更改(请注意,不建议这样做)

    数据库的缺点

    • 不在同一个代码库中。违规行为可能很难发现

    • 用Java编写更多代码来翻译更具体的用户信息。数据库日志对用户不友好