【发布时间】:2011-04-17 05:06:11
【问题描述】:
例如:
@Table(name = "stock", catalog = "mkyong", uniqueConstraints = {
@UniqueConstraint(columnNames = "STOCK_NAME"),
@UniqueConstraint(columnNames = "STOCK_CODE") })
或
@Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20)
诸如“唯一”、“可空”、甚至字段长度之类的约束都是核心数据库功能。为什么在此处包含此内容?另外(尽管这可能会伤害一些人)我还敢打赌,数据库对此类约束的实现,尤其是像 Oracle 这样的主流商业数据库,可能比 OSS Hibernate 开发人员能想出的任何东西都要好。
在 Hibernate 中使用这种类型的东西是明智的,还是在数据库中放置约束等更好的做法?如果您使用这些 Hibernate 功能,您实际上是在将数据库视为文件系统,那么有什么意义呢?这个用法无处不在,但我还没有找到解释你为什么要这样做的文档。
【问题讨论】:
-
不是 Hibernate 的“专家”,我可能会假设它正在“重新实现”这些功能(看起来确实如此),但解释为什么(而不是如何)的文档没有似乎不容易找到!
标签: java mysql database oracle hibernate