2
간단한 예 : 나는 (내가 제대로 트랜잭션을 이해한다면) 실패 할 것으로 예상했을 때 어떤 방법이 @Transactional
주석되지 않았다 (나는 실제로 그것을 원하는만큼왜 @Transactional없이 저장할 수 있습니까?
@Entity
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String bar;
// getters + setters
}
public interface FooRepository extends CrudRepository<Foo, Integer> {
}
@Service
public class FooService {
private final FooRepository repository;
public FooService(FooRepository repository) {
this.repository = repository;
}
public Foo save(Foo foo) {
return repository.save(foo);
}
}
는, 컨트롤러 작품에서 fooService.save(myNewFoo)
를 호출 실패). 왜이 행동을하는 걸까요? 누가 장면을 통해 트랜잭션을 생성하고이를 피하는가?
추가 세부 정보 :
- 자바 9
- MySQL의 커넥터 6.0.6
- 최대 절전 모드 5.2.12
- 봄 부팅 2.0.0.M7
- 스프링 데이터 JPA 2.0.2. RELEASE
기본적으로 'CrudRepository' 및 친구들의 메소드는'@ Transactional'입니다. –
@ M.Deinum 그런데'@ Transactional'이 아니라면 어떻게해야합니까? 전체 구현을 직접 다시 작성하는 것 외에도? 내 서비스가 거래를 담당하게하고 그렇지 않으면 실패합니다. – sp00m
@ M.Deinum 어쩌면'SimpleJpaRepository'를 확장하고 어떤 식 으로든'@ Transaction's를 비활성화 할 수 있습니까? – sp00m