2009-05-28 5 views
4

Nachdem ich stundenlang gegoogelt habe, merke ich, dass Benutzer entweder XML-Datei (orm.xml, nehme ich an?) Oder Anmerkungen in JPA oder beide zur gleichen Zeit verwenden können. Ich bin richtig? Also, Mein Projekt verwenden den Second-Level-Cache, der nicht in der JPA-Spezifikation ist. Und ich verwende Anmerkungen wie: @ org.hibernate.annotations.Cache (usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE )Ruhezustand des Second-Level-Cache in orm.xml?

für jede Einheiten. Ich nehme jedoch an, dass die obige Anmerkung nicht JPA Annotation gehört, daher weiß ich nicht, ob es in orm.xml etwas Entsprechendes gibt? Ich habe mir das XML-Schema von orm.xml angesehen, und im Schema ist kein solches Hibernate-Element erlaubt.

Wenn ich nicht die Cache-Konfiguration der zweiten Ebene in der orm.xml tun kann, gibt es einen anderen Weg als in der Anmerkung? Der Grund, warum ich die Annotation nicht machen möchte, ist, weil ich zwei Anwendungen habe, eine verwendet READ_WRITE Concurrency-Strategie und eine andere READ_ONLY Concurrency-Strategie.

Vielen Dank im Voraus !!!

Kewei

Antwort

0

Daher denke ich, die aktuelle Lösung für mein Problem ist es, alle Anmerkungen der einzelnen Entitäten durch Hibernate-Mapping-Dateien zu ersetzen, so dass wir für unterschiedliche Bereitstellung (Anwendung auch) verschiedene Hibernate Mapping-Dateien verwenden könnten.

2

Sie die hibernate.cfg.xml verwenden können, hibernate.properties oder * .hbm.xml Dateien auf Caching auf bestimmte Objekte mit unterschiedlichen Caching-Strategien drehen

+0

Danke Salandur! Ich habe mir gerade den Book angeschaut. Es wird gesagt, dass "Auf der anderen Seite können Sie nicht Annotationen mit Hibernate XML Mapping-Dateien überschreiben; Sie müssen eine vollständige Entity-Klassenzuordnung in XML definieren." Ich denke, vielleicht kann ich Annotations- und Hibernate Mapping-Dateien nicht gleichzeitig verwenden? Recht? –

+0

Im Buch Book heißt es außerdem: "Wenn Sie eine Entscheidung für ein XML-Metadatenformat treffen, müssen Sie auch Vendor-Erweiterungen berücksichtigen. Das Hibernate-XML-Format unterstützt alle möglichen Hibernate-Mappings Wenn JPA/Hibernate-Annotationen nicht zugeordnet werden, können sie nativen Hibernate-XML-Dateien zugeordnet werden. Das gleiche gilt nicht für JPA-XML-Deskriptoren - sie bieten nur bequeme externalisierte Metadaten, die die Spezifikation abdecken. " –

+0

@keweishang: Ich weiß das nicht, hier sind wir noch mit Weblogic 8.1, so dass wir keine Anmerkungen verwenden können. aber ich denke, du bist richtig und in diesem Fall verwenden Sie die Hibernate Mapping-Dateien. mit spring können Sie das Caching außerhalb der Mapping-Datei definieren, sehen Sie sich das an, zB lesen-schreiben Salandur

1

Wenn Sie nicht möchten, Verwenden Sie Annotationen, und überprüfen Sie dann die Dokumentation Ihrer Implementierung des Zwischenspeichers im Secondary-Level des Ruhezustands (auch bekannt als "Cache-Provider", z. B. ehcache), um sie zu konfigurieren.

Beachten Sie, dass Hibernate die Verwendung verschiedener Cache-Provider zulässt. Daher gibt es keine allgemeine Antwort auf Ihre Frage.

+0

Vielen Dank! Aaron Digulla. –