2012-06-06 4 views
6

AFAIK, последнее и самое лучшее, что я использовал, это JPA 2.0.Есть ли такая версия, как JPA 3?

Я растерялся, что GAE имеет банку, несколько называемую appengine-java-sdk-1.6.5/lib/user/orm/geronimo-jpa_3.0_spec-1.1.1.jar. У меня создалось впечатление, что у GAE всегда есть латентность при использовании совместимости с самыми последними, самыми лучшими протоколами кровотечения. Им потребовалось некоторое время для принятия JPA 2.0.

Что это за JPA 3.0, что делает внутри GAE SDK libs? Есть ли такая версия, как JPA 3.0? На данный момент Google поддерживает нас, внедряя протокол новой версии раньше всех остальных? Есть ли спецификация JPA 3.0 или ссылка, где я могу ссылаться?

Я не являюсь (в настоящее время) человеком EJB (извините ... решил избежать EJB с тех пор, как у меня был плохой опыт работы с EJB 1.0 10 лет назад).

  • ли EJB 3.0 синонимом JPA 2.0,
  • или JPA 2.0 принимается как подмножество EJB 3.0
  • или JPA 3.0 = EJB 3.0?

WRT этот вопрос, я спросил: moving from Hibernate entitymanager 3.6.9 to 4.1.2 crashed mysql connection, ли Hibernate сущность-менеджер 4.x каким-то образом связан с JPA 3,0 или, по меньшей мере, версия JPA позже, чем 2.0? Я испытываю значительные различия между Hibernate entity-manager 3.x и 4.x (и до сих пор избегали развертывания 4.x).

Я понимаю, что этот вопрос довольно смущает и может быть, я должен был задать каждый из вопросов как индивидуальный вопрос, но я надеюсь, что кто-то может связать все это вместе в одном тезисе: ejb 3, JPA 2/3, geronimo, hibernate ent-mgr 3/4. Благодарю.

ответ

7

Нет такой вещи (в июне 2012 года) как JPA3. Существует JPA1, JPA2 и (при планировании) JPA2.1. Это geronimo-specs jar на самом деле для JPA1, но некоторые очень близорукие люди/группа решили назвать это так, и теперь видят последствия этого.

Как вы говорите, GAE уже имеет поддержку JPA2, используя v2.x их плагин JPA, как доступный из Maven репозиториев или здесь http://code.google.com/p/datanucleus-appengine/ и который работает с совместимым JPA-апи v2 баночку (например, Джеронимо-jpa_2.0_spec).

1

Я говорю под исправлением здесь, поскольку все могло измениться с тех пор, как я в последний раз серьезно работал с JPA. Однако JPA 2, по моему мнению, является текущей спецификацией. Я сомневаюсь, что указанная вами банка - это спецификация JPA 2. В 2011 году Geronimo не поддержал JPA 2 из коробки в этот момент.

Что касается объекта EJB и JPA обеспокоен:

  1. Оба EJB и JPA основаны на Pojo в (Plain Old Java Objects).
  2. Классы JPA - это, по существу, технология уровня доступа к данным, используемая для взаимодействия с вашим уровнем данных.
  3. EJB по существу используется для бизнес-уровня. Он будет содержать бизнес-логику и организовать взаимодействие между различными классами JPA. Например, в JPA у вас может быть класс клиентов (который взаимодействует с таблицей клиентов) и класс ордеров (который взаимодействует с таблицей Orders). В своем EJB вы будете использовать оба этих класса для создания нового заказа для конкретного клиента.

При использовании JPA в качестве технологии это позволяет вам поддерживать доступ к базе данных на основе функциональности на одном уровне. Этот слой может использоваться EJB, веб-приложением (Servlets, JSP, JSF), веб-сервисами и даже приложением для качания. Это будет поддерживать логику доступа к базе данных во всех этих приложениях. Изменения в базе данных потребуют изменения в JPA.

Это очень упрощенное объяснение различий, и этот предмет действительно глубокий, но эти моменты должны помочь вам провести различие между ними.

Кстати, новая спецификация EJB действительно делает бобы очень простыми в использовании, разработке и развертывании. Мне повезло, что я пропустил первоначальную спецификацию все эти годы назад. В настоящее время они очень просты в использовании.

Надеюсь, что это поможет прояснить туман.

7

Как уже говорилось, JPA 2.0 - это текущая версия (часть Java EE 6), а следующая версия будет JPA 2.1, которая в настоящее время находится в спецификации (JSR 338) и будет включена в Java EE 7. Пока нет JPA 3, так что JAR просто плохо назван.

JPA 1.0 был представлен как часть Java EE 5, разделив часть персистентности на спецификацию EJB (поэтому Java EE 5 представил EJB 3.0 и JPA 1.0, не более Entity Beans, да!). Затем Java EE 6 включал EJB 3.1 и JPA 2.0.

Java EE 7 будет включать в себя EJB 3.2 и JPA 2.1.

Смежные вопросы