随着MySQL安装的继续迁移并发展到较新的版本,在线JPA和Hibernate 5教程还没有保持足够的活力。 结果,许多学习JPA 2.2并在MySQL上从Hibernate 5开始的开发人员在他们的SessionFactory或EntityManager获得启动机会之前就遇到了障碍。

怎么了 MySQL的persistence.xml属性已过期,这些属性包括方言和JDBC驱动程序

从下面的Hibernate 5 MySQL persistence.xml示例中可以看到,进行必要的更改并不困难。

使用正确的MySQL方言

对于使用MySQL Community Server版本8的用户 ,他们还必须使用MySQL8Dialect。 现代版本的MySQL在后台使用InnoDB,并且如果开发人员使用较旧的MySQLDialect,它将触发MyISAM异常。

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect" />

如果您不使用版本8,以下是一些MySQL方言,如果您已迁移到MySQL版本4以上,则这些方言可能比默认方言更合适:

  • MySQL55方言
  • MySQL57方言
  • MySQL5方言
  • MySQL8方言
修复MySQL MyISAM异常

在您的MySQL persistence.xml JPA文件中使用正确的方言。

正确的MySQL persistence.xml驱动程序

我经常看到的另一个问题是开发人员参考示例MySQL JPA persistence.xml文件,该文件使用了较早的com.mysql.jdbc.Driver。 如果开发人员使用此驱动程序对MySQL 8数据库执行查询,它将在您的Hibernate日志中产生令人不安的警告。 com.mysql.cj.jdbc.Driver是正确使用的驱动程序。

<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>

考虑到这些调整后, 现代 MySQL persistence.xml JPA示例文件如下所示:

MySQL persistence.xml示例

JPA 2.2的MySQL persistence.xml示例

您可以在我的GitHub帐户上找到用于Hibernate 5和JPA 2.2的此示例MySQL persistence.xml文件的副本。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/The-right-MySQL-persistencexml-example-file-for-JPA-22-and-Hibernate-5

Logo

更多推荐