Otra alternativa es omitir por completo un marco de OCM y simplemente usar javax.jcr.Node
como un DAO muy flexible. La razón fundamental por la que existen los marcos OCM es porque con RDBMS necesita una asignación de objetos al modelo relacional. Con JCR, que ya está muy orientado a objetos (nodo ~ = objeto), esta razón subyacente se ha ido. Lo que queda es que con los DAO puedes restringir a lo que tus programadores pueden acceder en su código (incluida la ayuda de autocompletar). Pero este enfoque no aprovecha realmente el concepto de JCR, lo que significa programación flexible y sin esquema. Usar la API de JCR directamente en su código es la mejor manera de seguir ese concepto.
Imagine que desea agregar una nueva propiedad a un nodo/objeto existente más adelante en la vida de su aplicación, con un marco OCM también debe modificarlo y asegurarse de que todavía funciona correctamente. Con acceso directo a los nodos, es simplemente un único punto de cambio. Lo sé, esta es una buena manera de obtener problemas con los errores tipográficos, por ejemplo. nombres de propiedad; pero este temor en realidad no está respaldado por la realidad, ya que en la mayoría de los casos notarás muy rápidamente los errores de ortografía o los nombres que no coinciden cuando pruebas tu aplicación. Una buena solución es usar constantes de cadena para los nombres comunes de nodo o propiedad, incluso como parte de sus API si expone la API JCR a través de ellas. Esto todavía le da la flexibilidad de agregar rápidamente nuevas propiedades sin tener que adoptar capas OCM.
Para tener algunas limitaciones sobre lo que está permitido o lo que es obligatorio (es decir, "semi-schema") puede usar tipos de nodos y mixins (desde JCR 2.0 también puede cambiar el tipo de nodo para el contenido existente): puede manejar esto completamente en el nivel de repositorio y no tiene que preocuparse por tipeo y restricciones dentro del código de su aplicación, además de capturar las excepciones ;-)
Pero, por supuesto, esta elección depende de sus requisitos y preferencias personales .
Muy interesante. Reconozco que realmente no me he alejado del viejo estilo de pensamiento "OCM". Buena comida para pensar – Chinnery
¿Cómo es que ese OCM no llegó a JR 1.6.0? Parece obsoleto, hibernado ... – lisak