2013-12-30 5 views
14

Ich bin relativ neu zu spielen Rahmen, ich versuchte, das Kochbuch zu folgen, aber es scheint bereits veraltet zu sein. Wie auch immer, ich möchte nur wissen, ob es einen großen Unterschied zwischen denen gibt, die ich erwähnt habe.Unterschied zwischen JPA und EBean Play Framework

Einige Tutorials verwendeten eBean, während die anderen jpa verwendeten. Ich bin ziemlich verwirrt.

Antwort

15

gleiche Frage beantwortet: https://groups.google.com/forum/#!topic/play-framework/6OR1Osf4AAU

JPA ist ein Standard, der viele Bibliotheken implementieren. Ebean verwendet Teile des JPA-Standards. Ebean erwartet, dass Sie Ihre Modelle mit JPA-Anmerkungen annotieren. Die Frage, was besser ist, Ebean oder JPA, ist eine seltsame Frage, da Ebean teilweise eine JPA-Implementierung ist. Ich glaube, Play 2 könnte auch eine Hibernate-Integration bieten, die den JPA-Standard vollständiger implementiert, und vielleicht haben Sie sich danach gefragt? Hibernate wird in der Java-Community viel häufiger verwendet. Ich habe zu Ebean gewechselt, als ich Play 2 ausprobiert habe und nicht zurückgeschaut habe. Ich bevorzuge es lieber Hibernate, weil Hibernate viele knifflige Probleme hatte, über die ich immer stolperte, und ich habe keines dieser Probleme mit Ebean gefunden.

18

Nun in Play 2.3 werden sie zurück zu JPA wechseln !! James Ward, Entwickler Anwalt bei Typesafe, sagte mir nur neue Projekte mit JPA zu starten: https://twitter.com/_JamesWard/status/416977192019456000 (oder speziell Hibernate)

Hier ist die offizielle Fahrplan für die Wiedergabe 2.3: https://docs.google.com/document/d/11sVi1-REAIDFVHvwBrfRt1uXkBzROHQYgmcZNGJtDnA/pub

Für einige der Gründe für die Entscheidung, zurück zu JPA zu wechseln: "[2.3 Roadmap] - Frage für DevTeam: Warum wird Eban in 2.3 durch JPA ersetzt?" https://groups.google.com/forum/#!searchin/play-framework/2.3/play-framework/7pL-Gq_pj7M/UykJdAC6wyYJ

Und schließlich schuf James Ward eine rudimentäre Wiedergabe JPA Beispiel für mich auf GitHub: https://github.com/jamesward/play-java-jpa

Es muss noch mit Beispielen für die Suche und Paging verbessert werden, aber es ist ein Anfang. Ich würde gerne hören, wenn jemand anderes eine gute Best Practice Play 2.3 JPA/Hibernate Beispiel findet.

+3

So spielen 2.3 ist, aber Ich bin verwirrt, weil es immer noch sagt, EBean ist Standard. Sie können JPA integrieren und etwas für den Ruhezustand in persistence.xml hinzufügen. Wird Hibernate also nicht die Standardeinstellung sein? – HelpMeStackOverflowMyOnlyHope

+1

Disclosure: Ich entwickle Ebean ORM, ich kann Ihnen sagen, dass es nicht weggeht. Für diejenigen, die "Sessionless ORM" und Leben ohne N + 1 wollen, und automatische Abfrage-Tuning und Streaming-Abfragen und ElasticSearch-Integration, und ... nun, Sie wissen, wo Sie suchen müssen. –

3

EBean ist einfacher zu bedienen. Sehen Sie sich die Beispielanwendung ComputerDatabase an, die mit Play geliefert wird. Sie können EBean während des Lernvorgangs verwenden, da EBean der aktuelle Standard ist.

Jedoch ist die Zukunft JPA, also möchten Sie vielleicht einfach den Sprung wagen und es lernen. Es gibt ein Beispiel ComputerDatabaseJPA, das auch mit Play geliefert wird.

+1

'die Zukunft ist JPA' ... wir werden in 10 Jahren sehen wir nicht. Architektonisch hat JPA einige Probleme ... daher keine "Streaming-Anfragen" und keine "statuslosen Updates" und schlechte N + 1-Probleme. –

7

Wenn Sie in den mehr technischen Details rund um den Unterschied zwischen Ebean ORM und JPA interessiert sind (und Hibernate) und damit die Gründe, warum Ebean in erster Linie vorhanden ist, kann man einen Blick auf haben:

http://ebean-orm.github.io/architecture/compare-jpa

kurz gesagt gibt es zwei Hauptprobleme:

  • Ebean ORM ist "sitzungs" ORM (also nicht ein anbringen/lösen Semantik, keine EntityManger usw. zu verwalten)

  • Ebean ORM Abfragesprache ist besser entwickelt, um Objektgraph-Konstruktion (Unterstützung Teilobjekte und vermeiden N + 1 - Sie sollen nie ein N + 1 Problem mit Ebean egal wie komplex das Objektgraph) zu optimieren .

Weitere Einzelheiten zu Teilobjekte beziehen sich auf:

http://ebean-orm.github.io/docs/query/partialobjects

Für weitere Einzelheiten über N + 1 beziehen sich auf:

http://ebean-orm.github.io/docs/query/nplus1