例如:
@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功能,你实际上将数据库视为一个文件系统,那么重点是什么?这种用法无处不在,但我还没有找到解释你为什么要这样做的文档。
答案 0 :(得分:3)
它没有实现它们 - 它可以选择根据模式验证数据模型,也可以创建它。
hibernate.hbm2ddl.auto
configuration属性允许您根据映射创建架构。
创建SessionFactory时,自动验证或将架构DDL导出到数据库。使用create-drop,当SessionFactory显式关闭时,将删除数据库模式。
e.g。验证|更新|创建| create-drop
如果您希望数据模型位于中心位置而不是数据库结构,这非常有用
答案 1 :(得分:0)
Hibernate可以根据这些注释创建数据库模式。