Concuerdo que hay veces que no leer el referece manual "puede conducir a
problemas innecesarios".
"*You may force NHibernate to quote an identifier*"

O sea... la funcionalidad está desde siempre y no hace falta filosofar
sobre independicia del motor de persistencia. Desde NH2.1.2 se puede delegar
la responsabilidad completa a NH. Lo unico que estas pidiendo es que NH se
ocupe del tema sin decirle nada... que traducido sería que para satisfacer
tu gusto habrá quien tendrá que poner hbm2ddl.keywords = "keywords" porque
no quiere el auto-quote; siempre hay quien gana y quien pierde.

De todas formas, si te parece fundamental que el default sea auto-quote, se
suele proponer tal modificacción en la dev-list de NHibernate y/o agregar el
pedido de improvement como un ticket en el issue tracker de NHibernate.

Como se diría en Napoles:
Ogni scarrafone é bello a' mamma soya.

Traducción:
Every cockroach is beautiful to its mother
Cada cucaracha es linda para su madre

Una traducción mas "suave":
Sobre gusto no hay nada escrito.

2010/12/10 Pedro J. Molina <[email protected]>

> Gracias por comentar tolemaC y Fabio.
>
> Para acabar de entenderlo:
> - cuando se comenta que se emplea un tiempito adicional, entiendo que
> en su mayoría afectaría a tiempo de inicialización de NHibernate, y no
> tanto en vuelo ¿es correcta esta interpretación?
> - ¿Hay alguna medida de tiempo de cuanto penaliza esta característica?
>
> Lo comento porque si es pequeño, pienso que los pros aun compesarían a
> ese contra: entendiendo que puede penalizar "ligeramente" el
> rendimiento.
>
> Entiendo la filosofia general de un ORM en general y la de NH en
> particular como una capa de mayor abstracción que nos oculta los
> detalles de un motor del SQL. En particular los keywords son un
> detalle de implementación del motor de SQL por que cual nosotros no
> deberiamos preocuparnos, salvo que queramos hacer fine-tunning para
> ajustar rendimientos y demas. Pero eso seria una decisión a
> posteriori.
>
> Una optimización prematura puede conducir a problemas innecesarios.
>
> Un saludo
> Pedro J.
>
>
> On 10 dic, 13:00, Fabio Maulo <[email protected]> wrote:
> > key-words significa que NH logra parsear bien los SQL-chunk que es
> > posible escribir en el attribute 'formula' del mapping.
> >
> > auto-quote significa que NH recorre, controla y eventualmente modifica
> > cada elemento del mapping. El trabajo addiccional lleva un tiempito
> > según el tamaño del dominio a persistir, por ese motivo es una opciòn.
> > En practica si uno sabe que su app. funcionará solo con msSQL y usò el
> > quote en el mapping en los dos o tres lugares que necesitó para su
> > domain, no es necesario que espere ese tiempo addiccional.
> >
> > Meter auto-quote como default significaría que todos esperan ese
> > tiempo addiccional pero tienen la "cosa" mas simple al mejor estilo
> > MS...lo cual no significa que esté mal para nada.
> > --
> > Fabio Maulo
> >
> > El 09/12/2010, a las 16:24, "Pedro J. Molina" <[email protected]>
> escribió:
> >
> >
> >
> >
> >
> >
> >
> > > Buenos dias a todos:
> >
> > > En mi pruebas con NHibernate describi un error en mi código que en
> > > principio atribuí a un error en NH (
> http://216.121.112.228/browse/NH-2453
> > > ).
> >
> > > Básicamente el resumen es que tenia una columna en tabla llamada Key
> > > que una tabla. Donde Key es una palabra reservada para SQL Server y
> > > por tanto las consultas correctas SQL deben escapar correctamente Key
> > > del siguiente modo por ejempo:  aliasDeTabla.[Key]   cuando por
> > > contra, por defecto, NH me estaba generando:  aliasDeTabla.Key
> >
> > > Con la amable y pronta ayuda de Fabio Maulo, me indico que realmente
> > > existe una manera de configurar NH para que funcione de este modo
> > > empleando el parámetro:  <property name="hbm2ddl.keywords">auto-quote</
> > > property>
> >
> > > Hasta aqui asunto resuelto. Falsa alarma de bug y mi código
> > > funcionando de nuevo.
> >
> > > Sobre este tema les expongo una reflexión que adelantaba a Fabio y que
> > > le pareció conveniente traer aquí para compartirla:
> >
> > > Como describe Fabio en su blog:
> http://fabiomaulo.blogspot.com/2009/06/auto-quote-tablecolumn-names.html
> > > el valor por defecto para la propiedad hbm2ddl.keywords es: <property
> > > name="hbm2ddl.keywords">keywords</property>
> >
> > > ¿Tendria sentido marcar el valor por defecto en NH a auto-quote?
> > > <property name="hbm2ddl.keywords">auto-quote</property>
> >
> > > Lo planteo porque como bien dice Fabio, un ORM debe ocultar los
> > > detalles de persistencia y facilitar, en la medida de lo posible, el
> > > cambio de la capa de persistencia de un motor relacional a otro con
> > > cambios mínimos en el código y/o mapeos.
> > > En este contexto, las palabras claves son arbitrariamente
> > > seleccionadas por cada fabricante del motor relacional y se reservan
> > > todo aquello que creen necesitar para un futuro.
> >
> > > La alternativa de hacer emerger la protección (o quotes) en el fichero
> > > de mapping no me parece lo más limpio, por el mismo motivo recién
> > > comentado (lo que es palabra reservada en un motor, o dialecto de SQL
> > > no tiene porque serlo en otro diferente).
> >
> > > Bajo este punto de vista planteo: ¿tendría sentido que auto-quote
> > > fuera el valor por defecto para hbm2ddl.keywords?
> >
> > > Seguro que hay otros pros/contras sobre este tema cuando se estableció
> > > el valor por defecto, pero queria preguntar que opinan al respecto.
> >
> > > Gracias de antemano,
> >
> > > Pedro J. Molina
> >
> > > --
> > > Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>



-- 
Fabio Maulo

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a