Eine andere Alternative ist, ein OCM-Framework komplett zu überspringen und einfach javax.jcr.Node
als sehr flexibles DAO zu verwenden. Der Grund, warum OCM-Frameworks existieren, liegt darin, dass Sie mit RDBMS eine Abbildung von Objekten auf das relationale Modell benötigen. Mit JCR, die bereits sehr objektorientiert ist (Knoten ~ = Objekt), ist dieser Grund weg. Was bleibt, ist, dass Sie mit DAOs einschränken können, worauf Ihre Programmierer in ihrem Code zugreifen können (inkl. Der Hilfe der Autovervollständigung). Aber dieser Ansatz nutzt nicht wirklich das JCR-Konzept, das Schema-freie und flexible Programmierung bedeutet. Die Verwendung der JCR-API direkt in Ihrem Code ist der beste Weg, diesem Konzept zu folgen.
Stellen Sie sich vor, Sie möchten zu einem bestehenden Knoten/Objekt später im Leben Ihrer Anwendung eine neue Eigenschaft hinzufügen - mit einem OCM-Framework müssen Sie es ebenfalls ändern und sicherstellen, dass es noch ordnungsgemäß funktioniert. Mit direktem Zugang zu Knoten ist es nur ein einzelner Punkt der Veränderung. Ich weiß, das ist ein guter Weg, um Probleme mit Tippfehlern in zB zu bekommen. Eigenschaftsnamen; Aber diese Angst wird nicht wirklich von der Realität unterstützt, da Sie in den meisten Fällen Tippfehler oder nicht übereinstimmende Namen sehr schnell bemerken werden, wenn Sie Ihre Anwendung testen. Eine gute Lösung ist die Verwendung von Zeichenfolgenkonstanten für die allgemeinen Knoten- oder Eigenschaftsnamen, auch als Teil Ihrer APIs, wenn Sie die JCR-API über sie hinweg bereitstellen. Dadurch können Sie schnell neue Eigenschaften hinzufügen, ohne OCM-Layer übernehmen zu müssen.
Um Einschränkungen zu haben, was erlaubt oder was verpflichtend ist (zB. Semi-Schema) können Sie Knotentypen und Mixins verwenden (seit JCR 2.0 können Sie auch den Knotentyp für vorhandenen Inhalt ändern): also Sie kann dies komplett auf der Repository-Ebene handhaben und muss sich nicht um Eingabe und Einschränkungen in Ihrem Anwendungscode kümmern - abgesehen von den Ausnahmen ;-)
Aber natürlich hängt diese Wahl von Ihren Anforderungen und persönlichen Vorlieben ab .
Sehr interessant. Ich gebe zu, ich bin nicht wirklich vom alten "OCM-Stil" des Denkens weggekommen. Gute Denkanstöße. – Chinnery
Wie kommt es, dass OCM es nicht zu JR 1.6.0 geschafft hat? Es sieht veraltet aus, überwintert .... – lisak