Если тебе это не нужно - не делай этого.
Не вводите дополнительный уровень абстракции без причины.Поддерживать его сложнее, и если он вам действительно не нужен - у вас закончится куча мертвых кодов (пустых делегатов).
Итак, первый шаг, который я бы сделал на вашем месте,Я бы использовал JPA как постоянный слой.Это позволит вам избавиться от ваших дополнительных классов DAO.EntityManager (вы можете рассматривать его как точку входа в JPA) - это сам объект доступа к данным.Код вашего сервлета не должен напрямую зависеть от базы данных, поэтому EntityManager - отличное разделение проблем в вашем случае.
Тогда вы можете подумать о том, чтобы отделить код презентации (сервлет) от операций, ориентированных на данные.Вы можете сделать это, используя, например, CDI и реализуя эту логику в простых POJO.Это позволит вам (сервлету) не зависеть от кода, используемого для извлечения или преобразования ваших данных.Ваш сервлет, как правило, просто «получает данные» (ему не нужно знать, откуда они берутся).
Используйте EJB, если вам нужны предоставляемые ими сервисы (транзакционность, безопасность потоков, таймеры, асинхронные вызовы,дополнительные точки входа, такие как веб-службы SOAP или REST, доступ JMX, пул, ...).
HTH.