我在Spring Boot应用程序中使用 JPA 。
我只是开始使用它,我有一些疑问。
我的 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。仅用@Transactional注释DAO类就足够了吗?
某些资源表明需要使用 @EnableTransactionManagement 来使用@Transactional。
答案 0 :(得分:2)
否。 JPA提供程序必须在事务方法调用结束时为您完成此操作。
是的。 Spring Boot默认情况下启用事务管理(proxyTargetClass = true)