Прошу прощения, если это очевидный вопрос, но я просматриваю учебник по 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...
}
Но эти догадки оставляют мне больше вопросов, чем ответов.
- Как мне сообщить Glassfish или какому-либо другому серверу приложений Java EE 6, как создать PersistenceManagerFactory и как использовать его для создания PersistenceManagers для меня?
- Должен ли я делать что-то особенное для достижения JTA? Я хотел бы использовать транзакции, управляемые контейнером, если это возможно.
- Могу ли я настроить это, чтобы использовать JNDI для поиска моего соединения JDBC?
- Существуют ли волшебные файлы, которые должны существовать, чтобы вызвать желаемое поведение? (я смотрю на тебя, пустой файл persistence.xml)
Помимо наложения зависимости от JDO и, возможно, DataNucleus напрямую, я бы предпочел сохранить это как Java EE 6, насколько это возможно, без использования Spring или других сторонних библиотек, но я бы взял стороннюю библиотеку ни за что.
Спасибо!