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