Pregunta

Ahora mismo estoy creando un sitio web extremadamente sencillo: unas 5 páginas.La pregunta es si es excesivo y vale la pena el tiempo para integrar algún tipo de solución de mapeo de base de datos o si sería mejor simplemente usar JNDI antiguo.Tendré tal vez una docena de cosas que necesito leer/escribir desde la base de datos.Supongo que tengo un conocimiento básico de estas tecnologías, pero aun así sería necesario consultar mucho la documentación.¿Alguien más se enfrentó a la decisión antes?

EDITAR:Lo siento, debería haber especificado JNDI para buscar la conexión de base de datos y JDBC para realizar las operaciones.

¿Fue útil?

Solución

Respuesta corta:Depende de la complejidad que quieras soportar.

Respuesta larga:

En primer lugar, ORM (mapeo relacional de objetos - mapeo de base de datos como usted lo llama) y JNDI (Java Naming and Directory Interfaces) son dos cosas diferentes.

El primero, como ya sabes, se utiliza para asignar las tablas de la base de datos a clases y objetos.El segundo es proporcionar un mecanismo de búsqueda de recursos, pueden ser DataSources, Ejb, Colas u otros.

Quizás te refieres a "JDBC".

Ahora en cuanto a tu pregunta:Si es así de simple, puede que no sea necesario implementar un ORM.Las tablas numéricas serían entre 5 y 10 como máximo, y supongo que las operaciones son realmente simples.

Probablemente usar JDBC simple sería suficiente.

Si utiliza el patrón DAO, puede cambiarlo más adelante para admitir la estrategia ORM si es necesario.

Como esto:Digamos que tienes la tabla Empleado

Creas el Employee.java con todos los campos de la BD a mano (no debería tomar mucho tiempo) y un EmployeeDaO.java con métodos como:

+findById( id ): Employee
+insert( Employee ) 
+update( Employee )
+delete( Employee ) 
+findAll():List<Employee>

Y la implementación es bastante sencilla:

select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc 

Cuando (y si) su aplicación se vuelve demasiado compleja, puede cambiar la implementación de DAO.Por ejemplo, en el método "select" cambia el código para usar el objeto ORM que realiza la operación.

public Employee selectById( int id ) {
      // Commenting out the previous implementation...
      // String query = select * from employee where id = ? 
      // execute( query )  

      // Using the ORM solution

       Session session = getSession();
       Employee e = ( Employee ) session.get( Employee.clas, id );
       return e;
}

Este es solo un ejemplo, en la vida real puedes dejar que la fábrica abstracta cree el ORM DAO, pero eso está fuera de tema.El punto es que puede comenzar de manera simple y, al utilizar los patrones de diseño, puede cambiar la implementación más adelante si es necesario.

Por supuesto, si desea aprender la tecnología, puede comenzar de inmediato incluso con 1 mesa.

La elección de una u otra (es decir, solución ORM) dependerá básicamente de la tecnología que estés utilizando.Por ejemplo, para JBoss u otros productos de código abierto, Hibernate es excelente.Es de código abierto, hay muchos recursos de los que aprender.Pero si estás usando algo que ya tiene Toplink (como el servidor de aplicaciones Oracle) o si la base ya está construida en Toplink, debes quedarte con ese marco.

Por cierto, desde que Oracle compró BEA, dijeron que están reemplazando Kodo (weblogic peresistence framework) con toplink en el ahora llamado "Oracle Weblogic Application Server".

Te dejo algunos recursos donde puedes obtener más información sobre esto:


En este libro "Patrones de arquitectura de aplicaciones empresariales", Martin Fowler, explica dónde utilizar uno u otro, aquí está el catálogo.Eche un vistazo a los patrones arquitectónicos de fuentes de datos vs.Patrones de comportamiento relacionales con objetos:

Catálogo PEAA


DAO (objeto de acceso a datos) es parte del catálogo principal de patrones J2EE:

El patrón DAO


Este es un tutorial inicial para Hibernate:

Hibernar


La página oficial de Toplink:

Enlace superior


Finalmente, "creo" que lo bueno de JPA es que es posible que cambies de proveedor últimamente.

Empiece de forma sencilla y luego evolucione.

Espero que esto ayude.

Otros consejos

Parece que sería excesivo para una aplicación muy simple, especialmente si no tienes planes de expandirla nunca.Sin embargo, también parece que podría valer la pena usarlos con esta sencilla aplicación para que comprenda mejor cómo funcionan la próxima vez que tenga algo que pueda usarlos.

¿Te refieres al antiguo JDBC?Un proyecto pequeño podría ser una buena oportunidad para adquirir uno de los marcos ORM, especialmente si tiene tiempo.

Sin embargo, sin más información es difícil dar una recomendación de una forma u otra.

Mi regla general es que si es de sólo lectura, estoy dispuesto a hacerlo en JDBC, aunque prefiero usar un proyecto de Hibernate vacío con SQLQuery para aprovechar el mapeo de tipos de Hibernate.Una vez que tengo que escribir, elijo Hibernar porque es mucho más fácil configurar algunos atributos y luego llamar a guardar que configurar cada columna individualmente.Y cuando tenga que comenzar a optimizar para evitar actualizaciones en objetos sin cambios, estará mucho mejor con un OR/M y su verificación sucia.Tratar con relaciones de clave externa es otra señal de que es necesario mapearla una vez y luego usar los captadores.La misma lógica se aplicaría a Toplink, aunque a menos que hayan agregado algo como HQL en los 3 años desde que lo usé, Hibernate sería mucho mejor para este tipo de transición desde SQL puro.Tenga en cuenta que no es necesario asignar todos los objetos/tablas, solo aquellos en los que hay una clara ventaja.En mi experiencia, la mayoría de los proyectos que no utilizan un OR/M existente terminan construyendo uno nuevo, lo cual es una mala idea.

El mejor La forma de aprender ORM es en un proyecto pequeño.Comience con este proyecto.

Una vez que lo domines, usarás ORM para todo.

No hay nada demasiado pequeño para ORM.Después de tus primeros proyectos, descubrirás que no puedes trabajar de otra manera.El mapeo ORM generalmente tiene más sentido que casi cualquier otra forma de trabajar.

Mire las distintas guías de enlaces principales aquí, tienen introducción, ejemplos, escenarios, etc.

http://docs.oracle.com/cd/E14571_01/web.1111/b32441/toc.htm

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top