works how framework developer define nhibernate llblgenpro

how - nHibernate versus LLBLGen Pro



nhibernate vs entity framework core performance (8)

Estoy tratando de trabajar con la herramienta ORM para moverme y la he reducido a dos candidatos.

nHibernate o LLBLGen Pro

Por favor, ¿pueden darme ventajas y desventajas al usar estas dos herramientas, especialmente si tienen experiencia en ambas? No estoy realmente interesado en ninguna otra herramienta, pero quiero algunos avisos para poder decidir en qué herramienta dedicar tiempo al aprendizaje ...

Ya sé que uno es gratis y otro no, también sé que nHibernate podría tomar algo de aprendizaje ...

Muchas gracias richard


Escribí una respuesta bastante larga antes de darme cuenta de que esta era una pregunta un tanto antigua. Oh bien. Sigue siendo muy relevante.

Ha reducido su lista a los dos mejores candidatos para un ORM en el mundo .NET. Tengo experiencia limitada con cualquiera de los dos, pero he leído mucho sobre los pros y los contras de ambos. Realmente atienden necesidades algo diferentes de diferentes maneras.

En el próximo LLBLGen Pro 3.0, Frans Bouma ha hablado sobre agregar características para generar asignaciones de NHibernate. Entonces, ni siquiera es necesariamente una decisión de uno u otro.

Si desea hacer un diseño de "primera clase" (a diferencia del diseño de "primera base de datos"), NHibernate es prácticamente su mejor y única opción en este momento (ni LLBLGen Pro ni Entity Framework son compatibles con este modo, aunque suena como Entity Framework es mejorando su soporte en la próxima versión).

NHibernate y LLBLGen Pro trabajan arduamente para trabajar bien con bases de datos heredadas que no puedes cambiar y con las que debes vivir. Esa es su fuerza común. Ambos también trabajan con Linq. Ambos también admiten cierta cantidad de modelado gráfico, aunque LLBLGen Pro es muy superior en este aspecto ( ActiveWriter para NHibernate se siente como el diseñador LinqToSql en Visual Studio, pero no es realmente tan rico en características).

LLBLGen Pro tiene capacidades de generación de código mucho más sólidas, pero demasiada generación de código puede llevar a una capacidad de prueba y mantenibilidad comprometidas (un pequeño ajuste puede hacer que grandes cantidades de código necesiten una nueva prueba).

Mientras que NHibernate quiere ayudarlo a trabajar con escenarios de mapeo de objetos / relaciones bastante complejos como la herencia de clases, LLBLGen Pro solo está exponiendo su base de datos como una capa de datos y objetos comerciales de una manera muy rápida.

Si puede comprar LLBLGen Pro y tener algo de tiempo, probaría ambos y vería cuál cumple mejor con sus necesidades. Aprender los dos ORM es bueno para su currículum en cualquier caso.

Entonces, al final, diría que es situacional. El costo de NHibernate y su falta de defectos serios constituyen un caso bastante convincente en la mayoría de las situaciones.


He utilizado ambos. Al principio me vendieron en nHibernate y me negué a probar cualquier otra cosa, a pesar de que conocía otras opciones.

Con LLBLGen Pro, era escéptico, pero pronto también vi las ventajas. No he abandonado totalmente nHibernar. Continuaré manteniendo int en mi "caja de herramientas". He encontrado que LLBLGen es útil en algunos casos, especialmente cuando interactúo con una base de datos que ya existe y no tiene otra opción para rediseñarla. Se tarda menos de una hora (dependiendo del tamaño de la base de datos, por supuesto) para generar mis Objetos de Entidad LLBLGen desde la base de datos, en lugar de tener que codificar todo esto manualmente con nHibernar, Y hacer las asignaciones. A nHibernate le falta una interfaz gráfica agradable para crear las asignaciones. Este hecho se vuelve aún más importante cuando la base de datos es masiva con miles de tablas a las que necesita acceder en su aplicación.

Aunque LLBLGen es más un generador de Capa de acceso a datos (y normalmente no soy un fanático de los generadores DAL), tiene muchas características que tendría una herramienta "ORM real". En mi opinión tiene lo mejor de ambos mundos. Una vez que empiezas a trabajar con él, empiezas a darte cuenta de que es muy flexible y extensible. Una parte que me gusta mucho es que me es posible crear clases parciales para los objetos de entidad generados, donde puedo codificar en mi lógica de negocios, así como la validación.

La generación de código tiene una plantilla, por lo que tiene control total sobre el código que genera. Con nHibernate me encuentro escribiendo el mismo tipo de código una y otra vez. Con LLBLGen puedo generarlo y concentrarme más rápidamente en la lógica de negocios y los problemas.

Para alguien que está empezando a usar herramientas de tipo ORM, realmente recomiendo comenzar con LLBLGen, porque nHibernate puede ser abrumador. Y al final habrás logrado el mismo resultado (más o menos).

Edición # 1: LLBLGen ahora también tiene un 100% de soporte para LINQ. (Entonces, si te gusta LINQ to SQL por esa razón) LLBLGen puede admitir muchas bases de datos, donde LINQ to SQL es solo para Microsoft SQL Database.

Edición n. ° 2: de acuerdo con Graviton , puede usar CodeSmith para generar algo de código para usted para nHibernar. Eso es realmente genial, pero para un recién llegado a ORM todavía recomendaría LLBLGen. Para mí, eso es agregar más dependencias donde LLBLGen lo tiene todo en un solo paquete. Además, como dije antes, la curva de aprendizaje es mucho menos empinada y obtendrás los mismos beneficios, lo que también te ayudará a facilitar el nHibernación si alguna vez decides ir allí.


He utilizado nHibernate, LLBLGen Pro, una capa de datos personalizada de mi empresa de consultoría, la Enterprise Library y LINQ. ¡LLBLGen es, con mucho, mi favorito y permite escribir una capa empresarial que puede comunicarse con diferentes tipos de bases de datos utilizando el mismo código que proporciona la independencia de la base de datos! Otra característica increíble es que permite múltiples conexiones a diferentes bases de datos. Esto es muy útil cuando en una empresa grande y un sistema está escrito en Sql Server y el otro con el que tiene que interactuar es en Oracle.

LLBLGen Pro es un producto increíble respaldado por Frans que es muy activo y trabaja arduamente para solucionar problemas. LLBLGen es como PhotoShop, es una herramienta increíble y puede hacer efectos asombrosos en manos de alguien que sabe usar. Y como cualquier herramienta que ahorra mucho tiempo, se tarda una semana o dos en aprender a usarla, pero le ahorrará meses más tarde en su proyecto.

No solo aceleró el lado de la generación DAL de mi aplicación, sino que también es fácil crear consultas en la capa de negocios y enviarlas a la capa de presentación. Facilitó la creación de una aplicación de clase empresarial.

Si uno realmente quiere usar nHibernate, comience con LLBLGen Pro y genere el código nHibernate. Si más adelante su departamento decide cambiar de nHibernar a LINQ, estará cubierto. ¿Quieres cambiar de Sql Server a Oracle? Esto es posible y relativamente fácil con LLBLGen mientras que con el código nHibernate codificado manualmente, tiene que volver a escribir todo lo que es casi imposible justificar el costo.

Frans también estaba disponible y respondió a algunas de mis preguntas.


La nueva versión de LLBLGen Pro (3.0) le permite generar código para NHibernate, así que no tiene que elegir :). También le permite dividir sus entidades en diferentes dominios.

Sin embargo, sigo prefiriendo el tiempo de ejecución de LLBLGen pro, el intérprete LINQ es más completo y tiene un mejor cambio de seguimiento de campos.

Desafortunadamente, no hay muchas características nuevas en el nuevo tiempo de ejecución de LLBLGen Pro 3.0, ya que el creador primero quiso centrarse más en las herramientas que en mejorar el marco existente.


La principal diferencia es que LLBLGen es un generador de código, mientras que NHibernate es una biblioteca "verdadera" de ORM.

Ventajas de LLBLGen :

  • Diseñador de modelos fácil de usar. Puede importar su esquema de base de datos existente
  • Modelo de objeto completamente escrito y lenguaje de consulta

Desventajas LLBLGen :

  • Necesitas la aplicación de diseñador para cambiar tu modelo.
  • No gratuito
  • Puede inflar su código porque se genera una gran cantidad de código

Ventajas de NHibernate :

  • No se necesita aplicación de diseñador. Solo codigo
  • Ampliamente utilizado (basado en el ORM de Java más popular, Hibernate)
  • Muy potente para mapear cualquier modelo de datos que puedas imaginar.
  • Fuente abierta

Desventajas NHibernate :

  • Difícil de aprender
  • No tan fuertemente tipado como uno quisiera (especialmente consultas)

Por supuesto, este es solo mi punto de vista personal ...


No olvide uno de los mejores puntos positivos de Hibernate: HQL. Con HQL, su habilidad de SQL no se desperdicia. Y Hibernate también proporciona un soporte muy agradable y sin problemas para consultas nativas. Si tienes alguna base de datos extraña, fuera de estándar, es casi seguro que necesitas tu habilidad SQL en algún momento, ¡y buena suerte con LLBL!


Para mí se reduce a centrado en la base de datos (LLBLGen Pro) frente al centrado en el modelo de dominio (NHibernate).

Como soy un chico de DDD / OO, la elección siempre ha sido muy fácil para mí, pero veo por qué LLBLGen Pro es popular.


Usamos LLBLGen en el trabajo, y se revisa, principalmente porque tenemos varios esquemas similares, pero es necesario tener una biblioteca DLL / Class diferente para cada esquema, lo que significa que se vuelve molesto escribir código que pueda apuntar a cualquier esquema.

Por supuesto, ese es un ambiente inusual, por lo que puede que no se aplique a usted.