JDO с Java EE 6 (CDI и JTA?)

Прошу прощения, если это очевидный вопрос, но я просматриваю учебник по Java EE 6, читая пару книг, и мне становится трудно сопоставить всю информацию.

Я делаю небольшое сравнение между JDO и JPA. Я понимаю, что с JPA и сервером приложений я могу довольно легко сказать что-то вроде:

@Stateless
public class MyEJB {

  @PersistenceContext
  private EntityManager em;

  // methods that use the JPA entity manager...
}

Затем в моих собственных методах я могу использовать em для доступа к JPA EntityManager. Какие бы методы я ни писал, они (по умолчанию) будут автоматически создаваться или присоединяться к существующей транзакции.

Я бы хотел повеселиться с JDO. Я подозреваю, что правильный ответ - использовать CDI. Я не уверен, как это будет выглядеть, может быть, это?

@Stateless
public class MyEJB {

  @Resource
  private PersistenceManager em;

  // methods that use the JDO persistence manager...
}

Но эти догадки оставляют мне больше вопросов, чем ответов.

  1. Как мне сообщить Glassfish или какому-либо другому серверу приложений Java EE 6, как создать PersistenceManagerFactory и как использовать его для создания PersistenceManagers для меня?
  2. Должен ли я делать что-то особенное для достижения JTA? Я хотел бы использовать транзакции, управляемые контейнером, если это возможно.
  3. Могу ли я настроить это, чтобы использовать JNDI для поиска моего соединения JDBC?
  4. Существуют ли волшебные файлы, которые должны существовать, чтобы вызвать желаемое поведение? (я смотрю на тебя, пустой файл persistence.xml)

Помимо наложения зависимости от JDO и, возможно, DataNucleus напрямую, я бы предпочел сохранить это как Java EE 6, насколько это возможно, без использования Spring или других сторонних библиотек, но я бы взял стороннюю библиотеку ни за что.

Спасибо!


person Daniel Lyons    schedule 04.08.2011    source источник


Ответы (1)


http://www.datanucleus.org/products/accessplatform_3_0/jdo/j2ee.html охватывает многие аспекты Java EE и дает примеры для нескольких серверов Java EE, включая JBoss 7 (последняя спецификация). Это дополнительные усилия, поскольку никто не использует все такие серверы; если у вас есть детали для добавления, разместите их на форуме DataNucleus, и они могут быть включены

person DataNucleus    schedule 04.08.2011
comment
Итак, из этой ссылки я понимаю, что это то, что вы можете сделать под J2EE (EJB 2.1 и т. д.), но оно не было обновлено до Java EE 5/6? Если у вас есть время и вы могли бы рассказать об этом и / или о том, как использовать его в Java EE 6, я был бы очень признателен! Спасибо! - person Daniel Lyons; 04.08.2011
comment
J2EE (на странице документации DN) — это общий термин (для тех из нас, кто долгое время использовал Java, независимо от того, на какие имена Sun/Oracle меняют имена)... JEE. JCA и JTA рассматриваются на этой странице, и они по-прежнему являются частью этой среды, и именно на это и направлена ​​страница. К сожалению, у меня нет времени обновлять его; это для пользовательских вкладов для конкретного контейнера, который они используют. JBoss7 там - person DataNucleus; 04.08.2011
comment
Ах, кто-то хочет понизить это. Возможно, в следующий раз у них хватило бы смелости упомянуть, почему они это сделали и какую дополнительную информацию они ожидали. Я говорю возможно, потому что я этого не ожидаю - person DataNucleus; 12.02.2012
comment
Я не могу говорить за downvoter (это был не я), но оглядываясь назад на мой вопрос и ваш ответ, становится совершенно ясно, что я спрашиваю о Java EE 6, а ваш ответ - это ссылка на pre-EE 6 документации с замечанием о том, что у вас нет времени обновлять документацию. - person Daniel Lyons; 13.02.2012
comment
Вот и проголосовали! Мне нужно знать, работает ли этот подход и на JPA. Я пытаюсь использовать постоянство, управляемое контейнером, и не могу найти для этого подходящий подход (с HBase). Любая помощь? - person Ravindranath Akila; 28.06.2012