2009-03-29 14 views
5

Estoy buscando información actualizada comparando NHibernate e iBATIS.NET. Encontré algo de información buscando en Google, pero una buena parte se aplica a las versiones de Java de estos productos o está fechada.¿Cuál es la diferencia entre NHibernate e iBATIS.NET?

Entre las cosas que me interesan en:

  • ¿Qué es mejor si se controla tanto el modelo de datos y la aplicación?
  • iBATIS se denomina en repetidas ocasiones más simple de aprender: ¿tiene esto consecuencias de mantenimiento a largo plazo (es decir, fácil de comenzar, difícil de mantener)?
  • ¿Ambos hacen que sea más fácil cambiar el proveedor de base de datos subyacente?
  • ¿Cuán hábiles deben ser tus desarrolladores con SQL?
  • ¿Alguna de las características principales que una tiene que la otra carece?
  • ¿Es el producto más adecuado para un tipo de aplicación en particular?

Se aprecian ejemplos del mundo real de los beneficios y desventajas observados.

EDIT: Gracias por la información. Estoy haciendo mi propia evaluación también. Una cosa que todavía me pregunto, ¿iBATIS te ayuda a guardar/actualizar gráficos de objetos complejos? Parece que NHibernate es bueno porque puedo pasarle un objeto raíz y averiguar los detalles de lo que, en todo caso, debe actualizarse en la base de datos.

Respuesta

5

Hice algunas investigaciones hace un tiempo.

Una pregunta específica de mí, podría darle alguna información adicional: Would you use NHibernate for a project with a legacy database, which is partly out of your control?

Algunos de sus puntos de interés que puede responder:

  • ¿Qué es mejor si se controla tanto el modelo de datos y ¿la aplicación?

Lo puedo responder al revés: si no tiene control sobre el modelo de datos y, por lo tanto, enfrenta una base de datos heredada, iBatis es la mejor opción.

  • iBATIS se denomina en repetidas ocasiones más simple de aprender: ¿tiene esto consecuencias de mantenimiento a largo plazo (es decir, fácil de comenzar, difícil de mantener)?

Depende de lo que quieras hacer con él. Si tiene un enfoque de desarrollo impulsado por el dominio, iBatis puede ser doloroso por el tiempo. Si solo hace la manipulación de datos simple y no tiene un modelo de dominio completo, entonces nHibernate puede ser una exageración por el tiempo.

  • ¿Ambos hacen que sea fácil cambiar el proveedor de base de datos subyacente?

Ambos tienen mecanismos para protegerse de un proveedor de base de datos específico, pero admito que no se han realizado investigaciones intensas en esta dirección.

  • ¿Cuán hábiles deben ser sus desarrolladores con SQL?

Cuando usa iBatis, necesita más conocimientos de SQL que NHibernate. Usando iBatis siempre necesitas codificar algunos SQL. NHibernate no requiere que codifique declaraciones SQL, incluso puede hacer las DDL por usted. Las potentes funciones requerirán que vayas a un buen SQL antiguo, que será inevitable.

Algunos otros puntos:

  • personalmente encuentran que iBatis mucho más lightweighter. Puedes hacer las cosas muy rápido. NHibernate es más poderoso, pero tiene muchas más funciones, que puedes usar de forma incorrecta.

  • ¡Es posible combinar el uso de NHibernate e iBatis! Puede usar NHibernate para su lógica comercial.Para fines de informes, donde acaba de leer datos de tablas, recurra a iBatis.

  • Si su aplicación tiene un ciclo de vida más largo y mucha lógica comercial, considere NHibernate. Tiene muchas funciones que te ayudan a manejar objetos comerciales.

  • La comunidad alrededor de NHibernate es muy activa y ofrece herramientas útiles.

3

En cierto sentido, está comparando manzanas con naranjas.

¿Qué es mejor si controla tanto el modelo de datos como la aplicación?

Ambos funcionan bien con bases de datos normalizadas, por lo que son más o menos iguales si se puede dar forma a la base de datos. iBatis es mejor en el mapeo de bases de datos heredadas, ya que en realidad no le importa la estructura de la base de datos. Solo se preocupa por la forma del conjunto de resultados.

.iBATIS se llama varias veces más fácil de aprender - esto tiene consecuencias de mantenimiento a largo plazo (es decir, fácil de empezar, difícil de mantener)?

Es mucho más simple, pero eso se debe a que tiene un conjunto de funciones mucho más pequeño. No creo que tenga problemas de mantenimiento a largo plazo.

¿Ambos hacen que sea fácil cambiar el proveedor de base de datos subyacente?

cómo es experto Qué sus desarrolladores necesitan estar con SQL?

Ambos requieren un buen conocimiento de SQL. Con iBatis, aún debe escribir las consultas/pro cedimientos sql. Con NHibernate, debe saber cómo escribir consultas de NHibernate para obtener un SQL efectivo. Ninguno de los dos reemplaza el conocimiento de SQL.

¿Alguna de las características principales que una tiene que la otra carece?

iBatis es un mapeador de datos (un término usado en el sitio iBatis). NHibernate es un Object Relational Mapper en toda regla. iBatis es una excelente manera de hacerlo si lo que quieres es algo que quite la monotonía de los objetos de mapeo a los conjuntos de resultados. Sin embargo, no llega hasta el final para tratar de resolver el desajuste relacional/objeto. NHibernate tiene muchas más funciones como seguimiento sucio, almacenamiento en caché basado en el mapa de identidad/identidad, consultas flexibles, sql dinámico, procesamiento por lotes, etc. NHibernate es mucho más dinámico en cuanto a que puede hacer muchas cosas en un solo viaje al DB que podría tomar iBatis varios viajes.

3

Recientemente publicamos un artículo que compara estas dos herramientas, y creo que se abordan muchas de sus preguntas. El artículo está aquí en our wiki site.

+1

Ese es un gran artículo. ¡Gracias! – Jeremy

+0

este enlace se ha ido? no puedo abrirlo más. – Dhananjay

Cuestiones relacionadas