Abstracción sobre diferentes marcos de mapeo OR

La capa de acceso a datos de mi producto hoy usa Hibernate como marco de mapeo de quirófano. En el futuro me gustaría usar otros marcos como iBatis.

  1. ¿Cuál es la mejor manera de diseñar una capa de abstracción de este tipo sobre estos marcos de mapeo OR?
  2. ¿Existe ya algún marco de este tipo disponible?
  3. Quiero diseñar un sistema de este tipo en el que con simples cambios de configuración pueda cambiar entre estos marcos OR.

preguntado el 08 de noviembre de 11 a las 11:11

3 Respuestas

No creo que tenga sentido agregar una abstracción además de hibernate / ibatis. Son marcos bastante diferentes, incluso si puede crear una API común, dejará fuera la parte de metadatos (de la que su código depende mucho más). Debería pensar mucho sobre por qué lo necesita y cómo se verá. Ya la gente se queja de demasiados niveles de abstracción. - agregar más solo hace las cosas más difíciles.

Una mejor solución sería aislar la mayor parte de la lógica de su dominio dependiendo de la persistencia / transacción / seguridad, etc. (Diseño controlado por dominio). De esa manera, es posible que pueda conservar las partes importantes de la lógica de la aplicación si tiene que cambiar la implementación de una de ellas.

Echa un vistazo a primavera-datos es diferente al tipo de abstracción que estás buscando.

respondido 08 nov., 11:15

Gracias. Ahora mismo estoy pensando en JPA. Hibernate ya es compatible con JPA. No estoy seguro de iBatis. Desde la perspectiva de los estándares, me parece bien. JPA puede ser la abstracción que estoy buscando. Alguna idea ? - Siddharth

JPA es casi lo mismo que Hibernate (en términos de nivel de abstracción), solo una API estandarizada. No, iBatis no es compatible con JPA. EclipseLink, OpenJPA, etc. son algunas otras implementaciones. También hay una implementación limitada de JPA para el motor de aplicaciones de Google, amazon simpledb, etc. Sí, es mejor usar JPA 2.0 con Hibernate como proveedor hoy en día en lugar de Hibernate directo. - gkamal

El problema es que iBatis no es un marco ORM, mientras que Hibernate sí lo es. El objetivo de iBatis es mapear sentencias SQL concretas a objetos, mientras que Hibernate intenta resolver el mapeo relacional de objetos (y el desajuste) de una manera más abstracta.

Hace unos años, un subconjunto de características principales de Hibernate se estandarizó a JPA. Tiene sentido hacer las cosas a la manera de JPA (para que pueda cambiar de proveedor de JPA: Hibernate, EclipseLink, ObjectDB).

Sin embargo, no tiene mucho sentido construir algo de abstracción sobre diferentes enfoques (como Hibernate vs iBatis).

respondido 09 nov., 11:02

Primero, estoy absolutamente de acuerdo con la respuesta de Xorty con respecto a los frameworks iBatis vs. Hibernate.

Excepto una cosa. Puede considerar cambiar entre iBatis, Hibernate. Te recomendaria leer iBatis In Action libro, capítulos 10, 11. Allí encontrará un ejemplo de configuración de iBatis que le permite configurar / usar tanto iBatis como Hibernate con el patrón DAO y sus implementaciones mediante archivos de mapa sql de iBatis, Hibernate y JDBC.

respondido 11 nov., 11:16

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.