2011-01-27 8 views
11

Ahora estoy usando tablas InnoDB pero lo que me confunde es ¿qué ocurre si estoy usando más de un motor en la base de datos?Lo que Hibernate 3.5.1 Dialect es mejor para acceder a MySQL 5.1

Desde que utiliza 'mejor' en el título se advierte que la pregunta es subjetiva pero teniendo en cuenta los números muy finitos de dialectos en cuestión y que no entiendo los factores de discriminación entre ellos (lo mejor es ) I necesita esto explicado en la respuesta.

Como referencia aquí son los dialectos en cuestión se encuentran bajo org.hibernate.dialect:

  • MySQL5Dialect
  • MySQL5InnoDBDialect
  • MySQLDialect
  • MySQLInnoDBDialect
  • MySQLMyISAMDialect

Respuesta

13

MySQL InnoDB impone la integridad referencial; ISAM no.

La versión 5 de MySQL es distinta a las versiones anteriores.

MySQLDialect es probablemente heredado de la primera implementación de Hibernate, cuando no había tal opción.

Elija la que mejor se adapte a su versión de MySQL (versión 5 de su pregunta) y la implementación que ha utilizado para crear en su base de datos MySQL.

+0

Bien parece muy sencillo, me preguntaron después de una consulta de criterios jpa2 lanzando "javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query" si estoy usando MySQL5Dialect, MySQLDialect o MySQL5InnoDBDialect ... Será el tema de otra pregunta. – Quaternion

+0

¿Debería haber preguntado por InnoDB cuando creó las tablas MySQL? – duffymo

+0

Sí, fue un problema tonto de nombrar una columna una palabra reservada "grupo". Descubrí que el problema podía solucionarse si cambiaba el nombre de la anotación de nombre de columna de "grupo" a "' grupo' ", pero me preocupaba que pudiera causar un problema, así que cambié el nombre de la columna y volví a generar la entidad. – Quaternion

Cuestiones relacionadas