2016-12-16 5 views
0

스프링 부트로 JEE 앱을 개발 중입니다. @Transactionnal이라고 표시된 함수를 겹쳐서 표시하는 데 문제가 있는지 확인하고 싶습니다. 나쁜 습관입니까? 내 예에서봄 부츠 @ 거래 현실적인 해적 행위?

, 나는 두 사용자 사이의 관계를 저장할 내가 마지막으로 함수를 호출하는 경우, 그것은 세 개의 트랜잭션을 겹쳐됩니다.

@Transactional 
public PrRelationship save(Relationship r) 
{ 
    Relationship result = this.relationshipRepo.save(r); 

    return result; 
} 

@Transactional 
public Relationship save(Relationship r, User relation) 
{ 
    this.userService.save(relation); 

    r.setUser(user); 
    r.setUserRelation(relation); 
    return this.save(r); 
} 

@Transactional 
public Relationship save(Relationship r, User user, User relation) { 
    this.userService.save(user); 
    return this.save(r, relation); 
} 

은 당신의 조언을 주셔서 감사합니다 :)

답변

0

당신은 봄에 Transaction Propagation and Transaction Management에 대한 몇 가지 독서를해야한다. 이런 종류의 질문에 답할 것입니다.

질문에 대답하기 위해 기본 전파는 REQUIRED입니다. 즉, 트랜잭션을 생성하는 메서드에서 트랜잭션 메서드를 호출하면 동일한 트랜잭션에서 실행됩니다. 따라서 귀하의 경우, 그들은 "겹쳐서"(나는 그 말을 찾아야 만했습니다).

+0

조언 해 주셔서 감사합니다 .-) –