Java 在Eclipse中使用Hibernate创建数据库的专业工作流是什么?

Java 在Eclipse中使用Hibernate创建数据库的专业工作流是什么?,java,mysql,eclipse,hibernate,Java,Mysql,Eclipse,Hibernate,我不确定用Hibernate从头开始创建大型MySQL数据库的“现代”方法是什么 我知道,您不会使用汇编来编写现代UI应用程序,如果不需要,我也会手动为Hibernate编写.hbm.xml文件?无论如何,我希望在使用XML之前使用Java注释(例如,@Entity,@OneToMany,等等),但这是开始的级别吗 MySQL Workbench提供了一种非常直接的方法来创建MySQL方案,所以我现在要做的是在MySQL Workbench中创建模式,并使用Hibernate工具对其进行反向工程

我不确定用Hibernate从头开始创建大型MySQL数据库的“现代”方法是什么

我知道,您不会使用汇编来编写现代UI应用程序,如果不需要,我也会手动为Hibernate编写
.hbm.xml
文件?无论如何,我希望在使用XML之前使用Java注释(例如,
@Entity
@OneToMany
,等等),但这是开始的级别吗

MySQL Workbench提供了一种非常直接的方法来创建MySQL方案,所以我现在要做的是在MySQL Workbench中创建模式,并使用Hibernate工具对其进行反向工程。通过这种方式,我创建了我的数据库,并且我有我的带注释的Java文件,希望这些文件是正确的

但使用MySQL Workbench为我创建一个数据库感觉很奇怪,我只是为了得到我的Java文件而进行反向工程

<>你知道我在寻找的是一种实用的方法来组织我的创作过程,它也应该考虑以后可能需要的迁移过程。

Hibernate的复杂工作流程是什么样子的?

没有办法(TM)做到这一点。但是在5年的hibernate经验中,我从建模开始,然后手工编写DDL。我建议不要让hibernate创建您的表,因为hibernate无法创建索引和适当的约束,并且通常您需要一个用于测试、集成和生产环境的db init脚本。以这种方式迁移也更容易

当所有表都设置好后,我让IDE生成实体。我总是被相反的关系弄糊涂

开发完成后,我通常会再次分析模型,以添加缺失的索引

使用hibernate,您不能定义像
始终生成
这样的主键,也不能定义像
id>0
这样的约束。Hibernate还将使用默认的
序列
ant不会为每个表添加
序列
。不支持较新的oracle和SQL server功能

我曾经读到,在模型实现之后应该使用hibernate,但它一定是3.x,我想Hibernate4.x学到了一些新技巧。

没有办法(TM)做到这一点。但是在5年的hibernate经验中,我从建模开始,然后手工编写DDL。我建议不要让hibernate创建您的表,因为hibernate无法创建索引和适当的约束,并且通常您需要一个用于测试、集成和生产环境的db init脚本。以这种方式迁移也更容易

当所有表都设置好后,我让IDE生成实体。我总是被相反的关系弄糊涂

开发完成后,我通常会再次分析模型,以添加缺失的索引

使用hibernate,您不能定义像
始终生成
这样的主键,也不能定义像
id>0
这样的约束。Hibernate还将使用默认的
序列
ant不会为每个表添加
序列
。不支持较新的oracle和SQL server功能


我曾经读到,在模型实现后应该使用hibernate,但它一定是3.x,我想hibernate 4.x学到了一些新技巧。

我的专业工作流程是:以FlywayDB或Liquibase迁移的形式,手工精心设计数据库DDL;仔细手工制作JPA实体,添加所有必要的文档、方法等。实体是应用程序的核心和灵魂。它们不应该包含getter和setter。应将其记录在案。应仔细选择字段名。访问器有时应该不存在,或者返回只读视图等。级联选项、延迟抓取也应该小心配置。@JBNizet Hi!所以,手工书写每个实体不是“2000年或更晚”,你在这里基本上会推荐它吗?我觉得你的论点不错。但是我需要一个DDL文件吗?我不能只写带注释的Java文件吗?“实体是应用程序的核心和灵魂。”-我同意,我不想在一开始就把这个非常基本的事情搞砸!)您可以从实体生成DDL文件。但它仍然缺少注释、表空间、可能还有一些索引等。让我们假设一切都是完美的。您使用1.0版投入生产,用户在数据库中输入10GB的数据。您将开发版本1.1,它需要在模式中进行各种更改。您是否删除10 GB的数据并从头开始?这就是像FlywayDB和Liquibase这样的工具变得非常有用的地方。@JBNizet好的,只是为了确保我做对了:1)手工制作数据库(在我的例子中,我使用的是MySQL):所有实体、关系、约束、视图等。使用FlywayDB/Liquibase 2)“仔细手工制作JPA实体”-这是否意味着将MySQL代码翻译成Java?3) 记录所有内容。@StefanFalk请记住特定的hibernate限制,如视图和定义m-n映射。我的专业工作流程是:以FlywayDB或Liquibase迁移的形式手工精心设计数据库DDL;仔细手工制作JPA实体,添加所有必要的文档、方法等。实体是应用程序的核心和灵魂。它们不应该包含getter和setter。应将其记录在案。应仔细选择字段名。访问器有时应该不存在,或者返回只读视图等。级联选项、延迟抓取也应该小心配置。@JBNizet Hi!所以,手工书写每个实体不是“2000年或更晚”,你在这里基本上会推荐它吗?我觉得你的论点不错。但是我需要一个DDL文件吗?我不能只写带注释的Java文件吗?“实体是应用程序的核心和灵魂。”-我同意,我不想在一开始就把这个非常基本的事情搞砸!)您可以从实体生成DDL文件。但它仍然会