Articulo de referencia

NHibernate

NHibernate es una adaptación del marco de mapeo objeto-relacional (ORM) Hibernate para la plataforma Microsoft .NET . Proporciona un marco para mapear un modelo de dominio orien...

NHibernate es una adaptación del marco de mapeo objeto-relacional (ORM) Hibernate para la plataforma Microsoft .NET . Proporciona un marco para mapear un modelo de dominio orientado a objetos a una base de datos relacional tradicional . Se utiliza para mapear un modelo de dominio orientado a objetos a una base de datos relacional , con el objetivo de reducir la cantidad de código manual necesario para la persistencia de datos. NHibernate es software libre y de código abierto , distribuido bajo la Licencia Pública General Reducida de GNU .

Resumen de características

La principal característica de NHibernate es la asignación de clases .NET a tablas de bases de datos (y de tipos de datos CLR a tipos de datos SQL ). NHibernate proporciona herramientas para la consulta y recuperación de datos. Genera los comandos SQL y elimina la necesidad de gestionar manualmente los conjuntos de datos y convertir objetos, lo que permite que la aplicación sea compatible con la mayoría de las bases de datos SQL, con una mínima sobrecarga de rendimiento.

NHibernate proporciona persistencia transparente para objetos CLR simples (POCO). El único requisito estricto para una clase persistente es un constructor sin argumentos , que no tiene por qué ser público. (El comportamiento adecuado en algunas aplicaciones también requiere prestar especial atención a los métodos Equals() y GetHashCode()). [ 1 ]

Historia

Tom Barrett inició NHibernate, y posteriormente Mike Doerfler y Peter Smulovics se unieron al proyecto. A finales de 2005, JBoss , Inc. (ahora parte de Red Hat ) contrató a Sergey Koshcheyev, entonces desarrollador principal de NHibernate, para trabajar a tiempo completo en sus futuras versiones. [ 2 ] A finales de 2006, JBoss dejó de dar soporte a este proyecto. NHibernate ahora es desarrollado y liderado completamente por la comunidad. El logotipo de NHibernate, diseñado por Andrew Mayorov, fue elegido antes de 2008. Presenta un lirón , conocido por sus largos periodos de hibernación . [ 3 ]

La versión 1.0 reflejaba el conjunto de características de Hibernate 2.1, así como varias características de Hibernate 3.

NHibernate 1.2.1, lanzado en noviembre de 2007, introdujo muchas más características de Hibernate 3 y compatibilidad con .NET 2.0, procedimientos almacenados , genéricos y tipos anulables.

NHibernate 2.0

NHibernate 2.0 se lanzó el 23 de agosto de 2008. Es comparable a Hibernate 3.2 en términos de características. Con el lanzamiento de la versión 2.0, NHibernate dejó de ser compatible con .NET 1.1. [ 4 ]

NHibernate 2.1 se lanzó el 17 de julio de 2009.

NHibernate 3.0

NHibernate 3.0 se lanzó el 4 de diciembre de 2010 y es la primera versión en utilizar .NET 3.5, con características como:

  • Compatibilidad integrada con LINQ
  • API de tipo criterios fuertemente tipada llamada QueryOver
  • Nuevo analizador sintáctico basado en AST para el motor HQL
  • Compatibilidad con la carga diferida de columnas

NHibernate 3.2

NHibernate 3.2 se lanzó en abril de 2011. Las nuevas características incluían: [ 5 ]

  • Mapeo por código: configuración fluida, ya no se requieren archivos .hbm.xml;
  • Subselección: capacidad de asignar vistas SQL como entidades;
  • Paginación HQL: TAKE y SKIP en HQL;
  • Proveedor de código de bytes integrado: una DLL menos que implementar.

NHibernate 4.0

NHibernate 4.0 se lanzó el 17 de agosto de 2014. [ 6 ] Esta versión requiere .NET Framework 4.0 o posterior.

NHibernate 5.0

NHibernate 5.0 se lanzó el 10 de octubre de 2017. Proporciona soporte para programación asíncrona. [ 7 ] Esta versión requiere .NET Framework 4.6.1 o posterior.

NHibernate 5.1

NHibernate 5.1 se lanzó el 17 de marzo de 2018. Es compatible con .NET Standard 2.0 y .NET Core 2.0. [ 8 ]

NHibernate 5.2

NHibernate 5.2 se lanzó el 4 de diciembre de 2018. [ 8 ]

NHibernate 5.3

NHibernate 5.3 se lanzó el 19 de julio de 2020. [ 9 ]

Contribuciones

Como software de código abierto , NHibernate ha recibido muchas contribuciones de sus usuarios. La implementación de LINQ ha permitido el uso de Language Integrated Query con NHibernate. [ 10 ]

Perfilador NHibernate

NHibernate Profiler es una herramienta de mapeo objeto-relacional (ORM) que funciona como un depurador visual en tiempo real para NHibernate. Identifica consultas SQL ineficientes para eliminar el trabajo innecesario de la base de datos y así mejorar el rendimiento general de la aplicación. NHibernate Profiler también alerta a los usuarios sobre consultas de datos que consumen demasiado tiempo y los dirige a la línea exacta en el código C# . [ 11 ]

Muestra

Aquí se muestra un fragmento de código para agregar un objeto a la base de datos y cómo recuperar, modificar y actualizar un objeto en la base de datos utilizando NHibernate.

//Agregar un cliente al almacén de datos//'sessionFactory' es un objeto seguro para subprocesos que se construye una vez por ciclo de vida de la aplicación (puede tardar segundos en construirse) // basado en archivos de configuración que controlan cómo se asignan las tablas de la base de datos a los objetos C# // (por ejemplo, qué propiedad se asigna a qué columna en una tabla de la base de datos) // //'session' no es seguro para subprocesos ni rápido de obtener y se puede pensar como una conexión a la base de datos usando ( var session = sessionFactory . OpenSession ()) { //transaction representa una transacción de la base de datos usando ( ITransaction transaction = session . BeginTransaction ()) { //La línea siguiente agrega el cliente a la lista de objetos de NHibernate para insertar en la base de datos // pero no ejecuta el comando SQL insert en esta etapa*. //*si el campo Id es generado por la base de datos (por ejemplo, un número autoincrementado) //entonces NHibernate ejecutará SQL INSERT cuando se llame a .Save session . Guardar ( nuevo Cliente { Id = Guid . NewGuid (), FirstName = "Boss" , Age = 50 });// La siguiente llamada ejecutará la instrucción SQL INSERT y confirmará la transacción transaction.Commit ( ) ; } }//Recuperar el Cliente de la base de datos, modificar el registro y actualizar la base de datos usando ( var session = sessionFactory.OpenSession ( )) { using ( ITransaction transaction = session.BeginTransaction ()) { // La consulta de la sesión devuelve IQueryable<Customer>. // Solo cuando se llama a .FirstOrDefault , NHibernate ejecutará la consulta SQL Customer customer = session.Query <Customer> ( ).Where ( c = > c.Token == token ) .FirstOrDefault (); // Ahora el cliente es 'parte ' del objeto 'session' y NHibernate realiza un seguimiento de los cambios // realizados en él if ( customer != null ) { // Cambiar una propiedad de un objeto NO provoca que se ejecute SQL customer.TokenVerified = true ; // Confirmar la transacción resulta en una instrucción SQL UPDATE // NHibernate realizó un seguimiento del hecho de que 'customer' ha cambiado desde la carga transaction.Commit ( ) ; } } }

La configuración de NHibernate puede afectar al momento en que NHibernate ejecuta las sentencias SQL.

Véase también

Referencias

  1. hibernate.org - Igualdad y código hash
  2. [Hibernate ] NHibernate se une a Hibernate en JBoss Inc.
  3. Berggren, Oskar (2012-10-20). "nhibernate-core/logo/Logo History.txt en master · nhibernate/nhibernate-core" . GitHub . Recuperado el 24 de abril de 2024 .
  4. De NH1.2.1GA a NH2.0.0 - NHibernate
  5. "NHibernate 3.2 lanzado" . weblogs.asp.net . 8 de agosto de 2011. Consultado el 25 de enero de 2019 .
  6. "NHibernate 4.0.0.GA lanzado" . groups.google.com . Consultado el 25 de enero de 2019 .
  7. "NHibernate 5.0 lanzado - NHibernate" . nhibernate.info . Consultado el 25 de enero de 2019 .
  8. 1 2 "NHibernate 5.2.0 lanzado - Grupos de Google" . Consultado el 25 de enero de 2019 .
  9. "NHibernate 5.3 lanzado" . nhibernate.info . Consultado el 10 de septiembre de 2020 .
  10. Implementación de Linq para NHibernate: Guía práctica - Parte 1
  11. "NHibernate Profiler" . hibernatingrhinos.com . Rinocerontes hibernantes . Consultado el 20 de mayo de 2020 .

Bibliografía

  • Dentler, Jason (4 de octubre de 2010). Libro de cocina NHibernate 3.0 (1ª  ed.). Publicación de paquetes . ISBN 978-1-84951-304-3Archivado del original el 20 de abril de 2012. Consultado el 6 de octubre de 2010 .
  • Cure, Aaron (5 de mayo de 2010). Guía para principiantes de NHibernate 2 (1.ª  ed.). Packt Publishing . ISBN 978-1-84719-890-7Archivado del original el 9 de mayo de 2012. Consultado el 21 de mayo de 2010 .
  • Kuaté, Pierre Henri; Harris, Tobin; Bauer, Christian; King, Gavin (febrero de 2009). NHibernate en acción . Manning Publications . ISBN 978-1-932394-92-4.
  • Perkins, Benjamin (septiembre de 2011). Trabajando con NHibernate 3.0 (1.ª  ed.). Wrox . ISBN 978-1-11811-257-1Archivado del original el 26/01/2013 . Consultado el 12/03/2013 .
  • Página principal de NHibernate
Obtenido de " https://en.wikipedia.org/w/index.php?title=NHibernate&oldid=1305077434 "