Когда я должен использовать entityManager.flush (), если я уже использую @Transactional - PullRequest
0 голосов
/ 23 февраля 2019

Я использую JPA в приложении Spring Boot .

Я только начинаю его использовать, и у меня есть несколько вопросов.

Мой DAO код следующий:

@Transactional
public class DatabaseUnitDao implements IDatabaseUnitDao {

@PersistenceContext
    private EntityManager entityManager;

@Override
    public void create(Unit unit) {
        final String CREATE_UNIT =
                "CREATE TABLE " + unit.getName() + " (id VARCHAR(255) PRIMARY KEY NOT NULL, value text NOT NULL)";
        entityManager.persist(unit);   // add an info about unit in the general table
        entityManager.createNativeQuery(CREATE_UNIT).executeUpdate(); // create table for this units
    }
}

1. Должен ли я использовать flush() в этом случае?

2. Достаточно просто аннотировать класс DAOс @Transactional?

Некоторые ресурсы сообщают, что необходимо использовать @ EnableTransactionManagement для использования @ Transactional.

1 Ответ

0 голосов
/ 23 февраля 2019
  1. Нет.JPA-провайдер должен сделать это для вас в конце вызова транзакционного метода.

  2. Да.Spring Boot включает управление транзакциями по умолчанию (с proxyTargetClass = true)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...