NHibernate vs Linq vs DataSet vs CastleProject

01/07/2008 - 17:19 por jcpc91 | Informe spam
hola no sé mucho de esto pero he estado leyendo sobre nhibernate y
recientemente sobre linq parece que conceptualmente es lo mismo es
decir son ORM mi pregunta es ¿cual es mejor ? para trabajar yo siempre
he utilizado los DataSet como un ORM pero he leído en arŽticulos que
los dataset no son una buena opión al momento de desarrollar
aplicaciones grandes así que si es cierto eso me gustaría escuchar de
los expertos y de la gente que ha manejado cualquiera de estos ORMs
cuál es el mejor tanto en su aprendizaje (keno tenga una curva de
aprenidzaje muy pronunciada), y que sea muy robusta es decir que pueda
abarcar la mayoriaa de los diseños de base de datos y de clases
gracias por sus respuestas

Preguntas similare

Leer las respuestas

#6 Juan Diego Bueno
02/07/2008 - 08:00 | Informe spam
Hola Alfredo:

Alfredo Novoa ha emitido la siguiente idea :

Hola Juan Diego,

El Tue, 1 Jul 2008 23:16:44 +0200, Juan Diego Bueno escribió:

Cuando hablas de datasets como ORM, supongo que te refieres a los datasets
fuertemente tipados. Supongo que el problema es el mismo que con cualquier
ORM, y es que generan código a cascoporro con funcionalidades que luego tu
no acabas usando. Yo aun los uso, sobre todo para informes, ya que aun no he
dado con la forma eficaz de poder usar crystal o reporting con datasets o
datatables no tipados,



¿Pero por que quieres usar Crystal Reports con datasets?

No le veo sentido, lo lógico es que los informes de Crystal saquen los
datos directamente del SGBD.




Ya lo comenté hace tiempo. Más que nada por rapidez, en Crystal me
tardaba la mitad del tiempo tomándolo del dataset. Ahora uso reporting
(con informes locales) y la verdad no he probado que tal va
directamente contra el SGBD. Además también recuerdo problemas
similares a los que comentaba con el dataset tipado, de atarte a un
servidor concreto con un usuario concreto (esto hace tiempo, no he
vuelto a probar sobre ello). Como uso el mismo dataset para mostrar los
datos en el interfaz de usuario que en el informe, al final la fuente
es la misma.

Saludos

http://www.moondance.es
Respuesta Responder a este mensaje
#7 Juan Diego Bueno
02/07/2008 - 08:08 | Informe spam
Hola Fernando
Fernando Gómez ha mostrado en su pantalla :
Yo no conozco mucho hibernate ni nhibernate pero aunque con similitudes, no
veo que sean igual que LinQ. Principalmente porque hasta donde yo sé, no
permiten integrar las consultas en el lenguaje. Una cosa es que se los
objetos del SGBD y tengamos métodos para poder obtener sus manipularlos y
otra que el lenguaje te deje hacer un select sobre ellos como haces con
LinQ.




Que eventualmente el compilador las traducirá a llamadas a clases y métodos.
En mi opinión, es bueno que no esté integrado al lenguaje, la sintaxis es
horrible y agrega una sobrecarga inecesaria al lenguaje.



Bueno, yo aquí no valoraba si era mejor o peor, sino la diferencia
fundamental con un ORM


Cuando hablas de datasets como ORM, supongo que te refieres a los datasets
fuertemente tipados. Supongo que el problema es el mismo que
con cualquier ORM, y es que generan código a cascoporro con funcionalidades
que luego tu no acabas usando.



Un O/RM no necesariamente es fuertemente tipado. En el caso de ADO.NET con
los DataSets personalizados, sí es un problema y se cumple lo que afirmas. En
el caso de NHibernate, no, porque lo que se hace es un verdadero mappeo entre
tabla y clase, y entre registro y objeto. No te genera código, todo está
encapsulado en una librería contra la que hay que enlazar.

Todo se hace a través de Reflection. Guardas unos archivos XML como recurso
del sistema donde mappeas la tabla a tu clase. Luego, el engine de NHibernate
lee dichos archivos, carga objetos y asigna valores a las propiedades
mappeadas. Por supuesto, hay varias técnicas (como un lenguaje que crearon
para hacer consultas, algo remotamente similar a Linq to SQL, pero sin
extensiones al lenguaje.



Entonces esto último, por lo que veo, se parece algo a los dbml que
genera VS2008, ¿no?

Yo aun los uso, sobre todo para informes, ya que aun no he dado con la
forma eficaz de poder usar crystal o reporting con datasets o datatables no
tipados, pero básicamente me he dado cuenta que con datatables y datasets
por código tardas más o menos lo mismo en diseñar y no llevan tanto código
innecesario. Y luego está el handicap más grande para mi de los datasets
tipados, y es lo mucho que te atan a un servidor concreto. Es decir, cuando
yo utilizo datasets tipados, lo primero que me pide al agregar una tabla es
una conexión de datos, cuya cadena de conexión queda almacenada en el
código fuente. Si le dices que guarde la contraseña, tendrás un bonito
regalo para el que decompile tu código, si le dices que no la guarde, o no
te funciona, o vas a tener que anexársela tu de forma dinámica.



Por supuesto, agregársela de forma dinámica es como la mejor opción. En
cualquier otro caso, está expuesta --como dices-- a quien decompile el
código.

Por otra parte, también estás limitado a conectarte a ese servidor que
aparece en la cadena de conexión. No es difícil cambiarla por código, el
problema es que cada vez que quieres incluir una nueva tabla o modificar
ese dataset, vuelves a tener que incluir esa cadena de conexión para poder
seguir desarrollando.



Eso normalmente se soluciona con polimorfismo. :)



Sí, solucionado está, pero eso no quita que de cuando en cuando me
vuelva a dar problemas al modificar el dataset tipado. Supongo que es
que aún no he dado con la tecla. En estos casos me refiero más bien a
la guerra que da el IDE con esto, no a la plataforma en sí.

No es la primera vez que tengo problemas al distribuir una aplicación y
encontrarme con la desagradable sorpresa de que está tomando datos de un
servidor y grabándolos en otro porque en alguna parte no quedó reajustada
la cadena de conexión. En fin, un coñazo...

Eso no deja de ser mi experiencia. Yo te recomiendo que pruebes diferentes
opciones y te quedes con la que mejor se adapte a tu forma de trabajar.




Como ultimo comentario, más dirigido al OP, acabo de leer que LINQ to SQL
solo funciona con SQL Server, así que si se quiere emplear otras bases de
datos, creo que LINQ no sería una solución.



O rizar el rizo: LinQ to dataset :)

Saludos

http://www.moondance.es
Respuesta Responder a este mensaje
#8 Alfredo Novoa
02/07/2008 - 11:44 | Informe spam
Hola Juan Diego,

El Wed, 02 Jul 2008 08:00:04 +0200, Juan Diego Bueno escribió:

Además también recuerdo problemas
similares a los que comentaba con el dataset tipado, de atarte a un
servidor concreto con un usuario concreto



Esto se puede evitar bastante fácilmente.


Saludos
Respuesta Responder a este mensaje
#9 Juan Diego Bueno
02/07/2008 - 12:19 | Informe spam
Hola Alfredo:
Alfredo Novoa ha escrito el 02/07/2008 :
Hola Juan Diego,

El Wed, 02 Jul 2008 08:00:04 +0200, Juan Diego Bueno escribió:

Además también recuerdo problemas
similares a los que comentaba con el dataset tipado, de atarte a un
servidor concreto con un usuario concreto



Esto se puede evitar bastante fácilmente.



Estoy convencido de que sí, aunque me sigo temiendo los efectos de ello
en el IDE. Lo tendré en cuenta en adelante, sobre todo salvar ese
escollo de los tiempos de carga.

Saludos

http://www.moondance.es
Respuesta Responder a este mensaje
#10 Jose Alberto
02/07/2008 - 17:41 | Informe spam
Yo no creo que Linq para datasets y para sql sirva para mucho. Quizas para
objetos si.
Si quieres algo eficiente creo que se puede tratando de explotar los
datareaders y usando el metodo Load para meter los resultados a datatables.
Luego usar comandos directamente para actualizar.
Es complicado de programar y generalizar pero quizas valga el esfuerzo.


wrote in message
news:
hola no sé mucho de esto pero he estado leyendo sobre nhibernate y
recientemente sobre linq parece que conceptualmente es lo mismo es
decir son ORM mi pregunta es ¿cual es mejor ? para trabajar yo siempre
he utilizado los DataSet como un ORM pero he leído en arŽticulos que
los dataset no son una buena opión al momento de desarrollar
aplicaciones grandes así que si es cierto eso me gustaría escuchar de
los expertos y de la gente que ha manejado cualquiera de estos ORMs
cuál es el mejor tanto en su aprendizaje (keno tenga una curva de
aprenidzaje muy pronunciada), y que sea muy robusta es decir que pueda
abarcar la mayoriaa de los diseños de base de datos y de clases
gracias por sus respuestas
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida