En Eternal venimos desarrollando aplicaciones para diferentes clientes en diversos mercados desde hace más de 15 años.
Durante todo este tiempo siempre intentamos proponerles a nuestros clientes, la tecnología que creemos mejor se adecua a sus necesidades.
Mas allá de eso, luego de tantos años de experiencia hay ciertas cosas que sabemos se reiteran de proyecto en proyecto y paulatinamente fuimos armándonos herramientas que nos permiten agilizar todas esas tareas repetitivas a fin de poder concentrarnos más concretamente en la lógica del negocio a resolver.
En la actualidad contamos con una herramienta que la llamamos internamente “ORM” (Object Relationship Mapping). Este concepto es conocido y no es algo de nuestra propiedad pero, para nosotros, lo adoptamos de manera interna para referirnos a NUESTRO ORM.
El objetivo de esta herramienta efectivamente es la de cumplir las veces de un ORM, como algunos otros tantos populares que existen en el mercado (ej.: Hibernate).
La diferencia es que nosotros la fuimos adaptando a nuestras necesidades específicas y agregándole las funcionalidades que nos resultaba más prácticas o necesarias según avanzamos a lo largo de nuestra historia como desarrolladores de software.
Al día de hoy nuestro ORM nos permite manejarnos con una interface visual muy amigable e ir definiendo las diferentes entidades con sus relaciones.Una vez realizado todo el Diagrama de Entidad/Relación (DER), le pedimos que nos genere el código y el ORM automáticamente nos va a generar:
Código Java: con todos los objetos POJO, los objetos DAO y lo mas interesante; nos genera métodos estándares de consultas entre una clase a otra basándose en las relaciones que establecimos entre las diferentes entidades. Se toman en cuenta las relaciones por clave foránea y por clave primaria. También se detecta si se trata de relaciones del tipo “uno a muchos” o “muchos a muchos” y en base a eso, construye el modelo de clases que corresponda con sus respectivos métodos. De esta forma, contamos con cosas como por ejemplo: una clase Cliente y métodos como findById, getFacturasByCliente, setRazonSocialy por supuesto el método “save” que nos permite persistir toda la información del objeto con el que estemos trabajando en la respectiva base de datos. Así mismo, si el objeto contiene o esta relacionado con otros objetos, estos también serían persistidos. El código esta pensado para que inteligentemente detecte si un objeto fue modificado o no desde su instanciación y de esa manera, decidir si debe ser persistido o no; ahorrando innecesarios accesos y actualizaciones a la base de datos.
Script de creación de la base de datos: nos genera el script de la base de datos; en la actualidad soporta las bases de datos PostgreSQL, mySQL y SQLServer. Estamos pensando en agregar nuevos motores de base de datos en el futuro cercano (por ejemplo: Oracle).
Con esta herramienta, tenemos resuelta casi en su totalidad la “capa de acceso a datos” en muy corto plazo y nos dedicamos de lleno a armar la capa de negocio y la capa de presentación de nuestras aplicaciones.
Para la capa de presentación tenemos otros frameworks armados, pero eso… eso es tema para otra noticia 🙂
Comments are closed, but trackbacks and pingbacks are open.