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
