복붙노트

[SPRING] @ 거래를 할 곳은 어디입니까? 인터페이스 사양 또는 구현에서?

SPRING

@ 거래를 할 곳은 어디입니까? 인터페이스 사양 또는 구현에서?

@Transactional 주석을 삽입 할 때 가장 좋은 방법은 무엇입니까? 인터페이스 메서드 또는 구현에 주석을 추가해야합니까?

해결법

  1. ==============================

    1.좋은 질문. 나는 항상 그것을 구현에 넣었다. 이는 추상화보다는 구현 세부 사항이기 때문일 수 있습니다.

    좋은 질문. 나는 항상 그것을 구현에 넣었다. 이는 추상화보다는 구현 세부 사항이기 때문일 수 있습니다.

    다른 구현이 다른 트랜잭션 동작을 가지기를 원할 수 있습니다.

    El Guapo는 그 외에도 프록시 전략과 관련하여 인터페이스에 추가로 발생할 수있는 문제가 더 많다고 지적했습니다.

  2. ==============================

    2.제 생각에는 애플리케이션 아키텍처에 따라 다릅니다. 클래스를 프록시하는 방법에 따라 다릅니다. 응용 프로그램을 proxy-target-class = 'true'로 설정 한 경우 (응용 프로그램 컨텍스트에서 인터페이스에 주석을 달면 @Transactional 정보는 선택되지 않습니다.

    제 생각에는 애플리케이션 아키텍처에 따라 다릅니다. 클래스를 프록시하는 방법에 따라 다릅니다. 응용 프로그램을 proxy-target-class = 'true'로 설정 한 경우 (응용 프로그램 컨텍스트에서 인터페이스에 주석을 달면 @Transactional 정보는 선택되지 않습니다.

    자세한 내용은 Spring Docs - "Tips"를 참조하십시오.

  3. ==============================

    3.트랜잭션 관리는 많은 경우 구현 세부 사항이지만 인터페이스 세부 사항도 있습니다. 예를 들어, 응용 프로그램의 서비스 인터페이스를 정의 할 때 @Transactional을 인터페이스 정의에 넣으면 어떤 전파 전략을 사용하고 있는지 명확히 알 수 있습니다.

    트랜잭션 관리는 많은 경우 구현 세부 사항이지만 인터페이스 세부 사항도 있습니다. 예를 들어, 응용 프로그램의 서비스 인터페이스를 정의 할 때 @Transactional을 인터페이스 정의에 넣으면 어떤 전파 전략을 사용하고 있는지 명확히 알 수 있습니다.

  4. ==============================

    4.지금까지는 아무 것도 구현할 수 있는지 알지 못하기 때문에 시스템에서 인터페이스를 사용하지 않습니다. 그래서 구현에 주석을 달았고 Spring이 모든 것을 나에게 맞게 만들 것이라고 믿습니다.

    지금까지는 아무 것도 구현할 수 있는지 알지 못하기 때문에 시스템에서 인터페이스를 사용하지 않습니다. 그래서 구현에 주석을 달았고 Spring이 모든 것을 나에게 맞게 만들 것이라고 믿습니다.

    나는 모든 클래스가 인터페이스를 가져야한다고 생각하지 않는다. 패턴이 많은 아키텍처가 많이 보입니다. 모두 인터페이스를 좋아합니다. 그러나 질문 : 당신이 인터페이스에 Spring 어노테이션을 넣었고, 어떤 이유로,이 인터페이스를 통해 구현 클래스의 트랜잭션에 대한 또 다른 접근 방식을 원한다면, 그렇게 할 수 없다. 아니면 내가 틀렸어?

    건배.

  5. from https://stackoverflow.com/questions/5551541/where-to-put-transactional-in-interface-specification-or-implementation by cc-by-sa and MIT license