В соответствии с вашим кодом, я предполагаю, что вы используете Java EE или Spring.
@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = "context")
private EntityManager em;
В этом случае EntityManager привязан к транзакции. Это означает, что вы получаете новый EntityManager с каждой новой транзакцией.
Session и EntityManager одинаковы и имеют одинаковый жизненный цикл. Это просто другое имя для того же. Сессия - сленг Hibernate и JPA EntityManager.