Categories
.NET Desarrollo de Software Mono NHibernate PostgreSQL Software Libre

NHibernate y PostgreSQL

Esta es la primera de dos entradas donde mostrar茅 -de manera b谩sica, como realizar reportes usando NHibernate , PostgreSQL y los controles para Reportes (ReportViewer) que trae cualquier instalaci贸n de Visual Studio 2005 -corr铆janme si me equivoco 馃檪 .

NHibernate es un framework que hace el mapeo de un modelo orientado a objetos a uno relacional.

Al usar NHibernate para el acceso a datos el desarrollador se asegura de que su aplicaci贸n es agn贸stica en cuanto al motor de base de datos a utilizar en producci贸n, pues NHibernate soporta los m谩s habituales en el mercado: MySQL, PostgreSQL, Oracle, MS SQL Server, etc.

NHibernate tiene demasiadas caracter铆sticas como para hablar sobre alguna en especial en este par de entradas, adem谩s que ya se ha escrito bastante sobre estos temas. En este apartado, s贸lo quiero hacer notar un peque帽o detalle al momento de trabajar con PostgreSQL como base de datos.

xml:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nhibernate" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <nhibernate>
    <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
    <add key="hibernate.dialect" value="NHibernate.Dialect.PostgreSQLDialect" />
    <add key="hibernate.connection.driver_class" value="NHibernate.Driver.NpgsqlDriver" />
    <add key="hibernate.connection.connection_string"
         value="Server=192.168.1.20;Database=test;User Id=alex;Encoding=LATIN1;" />

  </nhibernate>
</configuration>

Como se puede apreciar en el c贸digo mostrado, la cadena de conexi贸n incluye un par谩metro Encoding -s贸lo sirve para PostgreSQL, donde se especifica la codificaci贸n de caracteres que usar谩 nuestra aplicaci贸n en la comunicaci贸n con el servidor de Base de Datos, si bien es cierto que PostgreSQL intentar谩 hacer autom谩ticamente una conversi贸n entre la codificaci贸n definida en el servidor y la del cliente, es recomendable utilizar expl铆citamente la misma codificaci贸n en ambos extremos.

En la siguiente entrada, se tocar谩 espec铆ficamente el dise帽o de reportes usando un ensamblado que contiene nuestro modelo.

Class Diagram for NHibernate Sample

5 replies on “NHibernate y PostgreSQL”

Te agradeceria me

pudieras dar alguna referencia donde pudiera documentarme del

tema y lograr resolver esto. Mi nombre es Rosibel Ramirez, tengo 3 preguntas:

1. Como funciona por debajo NHIBERNATE, el hace todo

automaticamente por debajo, yo solo hago el archivo de

configuracion(.xml) y el archivo de propiedades(.properties)

pero el debe conectarse a la base de datos y debe hacer los

Select, Delete or Etc... pero como lo hace, como Store

procedures? o con SQL? esta pregunta nacio de una persona dado

que si es con SQL podriamos tener la vulnerabilidad de SQL

injection.

2. Como evitar que el cliente donde se instale la aplicacion

modifique el .xml o el .prorerties?

3. Como es el tipo de licenciamiento OPEN SOURCe que usa

Nhibernate, es claro que es open source pero incluso esas

herramientas open source deben tener un licenciamiento.

Mil Gracias su puedes colaborarme

Hola Rosibel, sobre tus preguntas:

1.- Las consultas las hace en cierta forma con SQL din谩mico, es decir 茅stas son generadas en tiempo de ejecuci贸n. Sobre SQL Injection, hasta donde s茅 no es vulnerable puesto que se usan consultas parametrizadas.

2.- Puedes hacer que tus archivos xml sean recursos embedidos del ensamblado que contiene tus objetos del dominio.

3.- La licencia es LGPL.

Te sugiero que le des una mirada a la documentaci贸n de NHibernate: http://nhibernate.org

Alex.
Gener茅 una peque aplicaci贸n NHibernate / MS Server, cero problema. Luego cambi茅 a postgreSQL con las indicaciones que mencionas, pero me aparece el siguiente error:

Could not create the driver from NHibernate.Driver.NpgsqlDriver.

Favor si me puedes ayudar con este cachito.
Saludos.

Tienes que agregar una referencia a Npgsql (desc谩rgalo desde pgfoundry.org) para que tu aplicaci贸n funcione adecuadamente.

Saludos

Comments are closed.