programing

SpringBoot JPA는 @Transactional에서 .save()가 필요하지 않습니다.

megabox 2023. 2. 28. 23:24
반응형

SpringBoot JPA는 @Transactional에서 .save()가 필요하지 않습니다.

짧은 질문이 있습니다.

필요합니까?repo.save(x)방문하다@Transactional방법?

저장되지 않은 상태에서 DB에 변경 내용이 표시되고 이에 대한 명확한 문서가 없기 때문에 물어봅니다.

그렇다면 의도한 대로 작동합니까? 아니면 예상치 못한(환영) 행동일 뿐입니까?

예:

@Autowired
private UserRepo repo;

@Transactional  
@PutMapping
public Long put(@RequestBody User user)
{
  User u = repo.findOne(user.getId());
  u.setName("Paul");
  repo.save(u); // DO I NEED THIS LINE?
}

그냥 확신이 안 서요. 그러니 누군가 이 주제에 대해 좀 밝혀줄 수 있을까요?

엔티티를 취득하는 경우(예:findOne트랜잭션 메서드 내의 메서드 호출은 지속성 공급자에 의해 그 시점부터 관리됩니다.

트랜잭션 커밋 시 해당 엔티티(실제 프록시 오브젝트)에 변경을 가한 경우, 이러한 변경은 실행 여부에 관계없이 데이터베이스에 유지됩니다.save또는update방법들.

save또는persist는 새 엔티티를 처음부터 생성할 때 사용되어야 하며 지속성 공급자가 엔티티의 존재를 아직 모를 때 사용해야 합니다.

커밋 시 변경되는 것을 방지할 수 있습니다.detach또는evict메서드를 지정합니다.

언급URL : https://stackoverflow.com/questions/46708063/springboot-jpa-need-no-save-on-transactional

반응형