Hibernate – 它改变了数据库的结构吗?

我正在Spring上用java构建更大的项目,很多人都建议我使用hibernate来轻松访问数据库。 问题是,我必须使用此项目以前版本的数据库,以前是用PHP编写的,所以他们没有使用hibernate。 我已经阅读了一些关于hibernate的内容,但我仍然不确定一件事 – 它是否必须改变数据库的结构,或者我可以使用标准的MySQL数据库与int,varchar和其他类型中的存储值,并使用hibernate在我的java代码中摆脱很多SQL?

虽然Hibernate可用于创建/删除表,但通常不会在生产环境中执行此操作。 在这些场景中,您将定义POJOS与底层数据库模式之间的对象关系映射。 所以,实际上,Hibernate不需要向数据库模式添加任何内容。

如果您正在使用在应用hibernate之前定义的Schema,您可能需要确保字段转换器是合适的(即,Hibernate可能对SQL中的哪个列类型构成日期或数字有不同的想法),但这意味着您必须提供显式映射/转换器而不是使用默认值。

但是,您应该能够使用Hibernate而不对现有数据库模式进行任何重大更改。

Hibernate是一个非常成熟的项目,绝对适用于现有的模式。 您甚至可以使用Hibernate工具从现有模式生成类实体。

还有一点需要注意:Hibernate支持复合主键和外键,但使用技术生成的ID可以更轻松地生活。

如果我有一个使用复合主键形成自然ID的模式,我会考虑在使用Hibernate之前用技术自动生成的ID替换它们。

Hibernate最适合连接目的。您可以在不影响数据库当前结构的情况下使用它。 你也可以在hibernate中使用注释,它非常简单和容易。 记住一件事,你必须在hibernate配置文件中添加适当的映射! 在使用hibernate之前备份整个数据库是个更好的主意。