Доступ к таблице базы данных через JPA Vs. EJB в веб-приложении
Я разрабатываю веб-приложение, которое имеет доступ ко многим таблицам базы данных. Я пытаюсь выяснить, какой предпочтительный способ доступа к этим таблицам? Это через JPA или EJB?
Спасибо Натан
2 ответа
Ответ "оба".
Сам EJB не имеет доступа к таблицам БД. Все, что вы делаете в Java, что касается БД, происходит через Java Persistence API (JPA), или если вы хотите делать низкоуровневые вещи через JDBC, но давайте не будем вдаваться в подробности.
EJB предлагает очень легкое управление транзакциями. Вы всегда нуждаетесь в них с JPA, и немного неудобно управлять ими вручную. EJB также предоставляет вам очень простой доступ к основному классу, который вы будете использовать в JPA для взаимодействия с БД: диспетчер сущностей.
Использование EJB на практике для многих простых и легких ситуаций - не что иное, как добавление аннотации @Stateless к бобу:
@Stateless
public class FooService {
@PersistenceContext
private EntityManager entityManager;
public Foo getByID(Long fooID) {
return entityManager.find(Foo.class, ID);
}
}
Без EJB код для этого простого поиска был бы гораздо более подробным. А без JPA просто не было бы никакого кода. Как было сказано ранее, EJB не имеет функциональных возможностей для доступа к БД.
Если вы на самом деле не строите корпоративную систему и не нуждаетесь в дополнительной сложности EJB, просто используйте JPA. Для меня это звучит так, как будто вы просто строите веб-приложение, и вам нужен простой доступ к БД. Мы используем OpenJPA, и у нас нет проблем с ним.