PDA

Ver la Versión Completa : ORM Object Relational Mapping / MVC


ASAPLTDA
12-08-2014, 16:51:47
Buenos dias Foristas,

Quiera conocer sus conceptos sobre esta técnica, ejemplos sencillos de ser posible completos uso y programas que están usando para hacerlo, estoy muy interesado en este tema, lo mismo con el MVC

Todos sus experiencia sobre el tema es importante tenerla
Saludes

mamcx
12-08-2014, 18:09:58
Eso es como preguntar: Expliquenmen sobre SQL y OO.

ORM & MVC son dos cosas diferentes. Hay toneladas de recursos sobre ambos, asi que en concreto que es lo que quieres? Porque lo unico que podriamos hacer es darte tropocientos links.

ASAPLTDA
13-08-2014, 22:47:08
Gracias mamcx por su interes,

Hace algunos años publico en su pagina una idea de centralizar en un solo sitio los componentes de base de datos delphi, exponiendo varias ideas (No volvi a encontrarlo en la web lastima), si no mal recuerdo uno de las frases que uso fue ESTAN EN TODO SITIOS cuando se referia a las querys y consultas SQL esparcido por todo el codigo

He tratado de ir centralizando la información de una aplicación que tengo en delphi movimiento querys / sql en un solo sitio al menos recordando su recomendación.

Ahora veo la necesidad de efectuar cambios para usar los datos en la web y en móviles y de pronto pasar de firebird a postgresql, no se si un modelo MVC / ORM relacionándolos desde el punto de vista donde el modelo seria solo visto a través de un modelo ORM , Tal como digo no conozco mucho el tema, pero bajo su afirmación de esta respuesta y lo expuesto creo que seria muy interesante ver notas de como ha evolucionado sobre estos puntos

Como otro ejemplo tambien he tratado de observar algo de dataabstract de remobject que es otro cuento pero se ve muy interesante

mamcx
14-08-2014, 00:50:50
Hace poco hubo una discusion sobre el tema en:

"What ORMs have taught me: just learn SQL"
https://news.ycombinator.com/item?id=8133835

---

Hay varios tipos de ORM. Es muy practico tener un objeto, y darle .save() para no escribir el UPDATE/INSERT manual y hacer el escape de parametros y todo eso. Pero hay muchos ORM que son mas complejos y terminan complicando mucho las cosas al final.

Un ejemplo de una capa quasi-orm bien hecha es SQLAlchemy (core):

http://docs.sqlalchemy.org/en/latest/core/tutorial.html

Notaras que es muy similar a hacer SQL, solo que con ciertas comodidades para ajustarse a un lenguaje OO (en este caso python). DataAbstract va por este camino.

Diseñe un ORM hace un rato para iOS: https://code.google.com/p/chibiorm/ y en el camino he ido haciendo ajustes a la idea. Un problema es que los lenguajes OO tienden a hacer complicado este asunto y Delphi, en especial. Python permite darle vueltas y es facil de hacer algo como sqlAlchemy, pero Delphi es muy rigido!.

Ademas, que el modelo "relacional" que implementan las BD actuales es incompleto! Y el puenteo de los lenguajes ademas sufre por ello. Hace poco vi un buen articulo sobre el tema:

http://www.try-alf.org/blog/2013-10-21-relations-as-first-class-citizen

----

En resumen? Considera la BD tal cual un servidor remoto. Encapsula las llamadas en funciones, no hagas concatenacion de strings para los SQLs, si tienes un engine potente como postgresql abusa de todo lo que tienen (como funciones y procedimientos). Tener algo como sqlalchemy o LINQ (http://www.linqpad.net/whylinqbeatssql.aspx) seria ideal, pero de lo contrario algo como:


function obtenerListaClientes:TDataset;
function buscarCliente(campo:String, comp:Enum(=,<,>, etc), valor:?):TDataset

function guardar(Objeto:?):Bool
function borrar(Objeto:?):Bool

gatosoft
25-08-2014, 23:02:16
Hola ASAPLTDA,

En Delphi conozco 2 opciones de ORM: Aurelius de TMS y EntityDAC de Devart, ambos se ven muy bien.

Aqui (Oct 17, 11am - Introducing TMS Aurelius, a Delphi ORM (https://www.youtube.com/watch?v=aGxOzvRh1EM)) un video en donde se muestra el paso a paso de la utilización de Aurelius.

De EntityDAC no he encontrado algo similar, aunque la documentación del producto explica en imagenes como se construiría una aplicación.

Sobre MVC no tengo nada, y no se si haya algún producto relacionado con Delphi para soportar éste modelo/patrón... :(

Saludos,

fer21unmsm
26-08-2014, 00:51:26
Hola,

MVC es el Modelo Vista Controlador, un patrón de arquitectura a nivel de software para desarrollar aplicaciones. Que a simple modo, vista contiene la presentación o la interfaz, el modelo es la capa de acceso a datos y el controlador agarra la parte de la lógica. Pero si estás usando tecnologías como ASP.Net y WPF (Windows presentation foundation) te recomiendo usar el patrón MVVM (Modelo Vista Vista Modelo) que te facilita la vida sobre todo para la interacción con el WPF.

Saludos cordiales.

mamcx
26-08-2014, 00:53:39
Superficialmente y sin probar, el ORM de TMS se ve ok. He usado es DataAbstract y funciona muy bien, asi que es otra alternativa a los que pones.

Para hacer MVC en Delphi no es que se necesite algo especifico, osea, a nivel de lenguaje, es una arquitectura... y se podria decir que "choca" con el modelo RAD de delphi y el codigo spaguetti.

Se puede implementar con un poco de disciplina, pero ya que todos los controles/formas de Delphi & terceros asumen el modelo RAD de Delphi es normal que haya encontronasos. Ese es el problema de los lenguajes, no es que no puedan implementar ciertos paradigmas, es que cuando tienen afianzados los propios, implementar otros hace que choquen con los actuales.

Para hacer MVC lo que hay que hacer en lenguaje plano es mover al maximo el codigo que de logica de negocios a una clases, lo que sea GUI se deja en el Form/Control y se pone un mediador para comunicar ambos.