매칭 트랜잭션
매칭 트랜잭션을 사용하면 JVM의 모든 메서드 호출을 트랜잭션으로 전환할 수 있습니다. 매칭 트랜잭션의 기능은 jvmguard 어노테이션을 사용하여 코드에 직접 지정되는 선언적 트랜잭션의 기능을 미러링합니다.
매칭 트랜잭션은 코드에 어노테이션을 추가할 수 없거나 관심 있는 클래스가 외부 라이브러리에 있는 경우에 필요합니다. 그렇지 않으면 더 쉬운 유지 관리를 위해 선언적 트랜잭션이 권장됩니다.
트랜잭션 정의 목록에서 필터 표현식이 각 매칭 트랜잭션 정의의 이름으로 표시됩니다. 이것이 충분히 설명적이지 않은 경우 트랜잭션 구성의 “사용자 지정 설명” 확인란을 사용하여 의미 있는 이름을 입력하세요.
jvmguard는 트랜잭션 정의 목록을 탐색하여 처음으로 일치하는 항목의 명명과 정책을 적용합니다. 일치는 첫 번째 일치 항목을 사용하므로 더 일반적인 필터는 트랜잭션 정의 목록에서 아래에 있어야 합니다.
이를 통해 공통 정책 정의를 정의 그룹에 대해 유지하면서 모두 다른 명명 체계를 가진 일련의 트랜잭션 정의를 정의할 수 있습니다.
클래스 또는 메서드
섹션 제목: “클래스 또는 메서드”매핑 트랜잭션과 마찬가지로 첫 번째 질문은 단일 메서드를 선택할지 특정 클래스의 모든 public 메서드를 선택할지입니다.

매칭 트랜잭션은 상속과 관련하여 매핑 트랜잭션과 동일한 구성 옵션을 갖습니다. “하위 클래스 가로채기” 확인란으로 파생 클래스의 트랜잭션을 켤 수 있습니다.
단일 메서드 트랜잭션의 경우 이는 재정의된 메서드도 트랜잭션을 생성한다는 의미입니다. 이러한 메서드가 super 호출을 수행하면 해당 super 호출이 별도의 트랜잭션을 생성합니다. 두 트랜잭션의 이름이 같으면 super 호출은 별도로 기록되지 않습니다. 그러나 “인스턴스 클래스 이름” 명명 요소를 사용하면 두 개의 다른 이름을 쉽게 만들 수 있습니다. 이 경우 super 메서드가 중첩된 트랜잭션으로 표시됩니다. 이것이 원하는 것이 아니면 마법사의 “명명” 단계에서 “중첩 트랜잭션 억제” 옵션을 “이 항목과 일치” 값으로 설정할 수 있습니다.
관심 있는 메서드는 메서드 선택기로 편리하게 선택됩니다. 연결된 모든 VM의 클래스 또는 즉시 업로드할 수 있는 JAR 또는 WAR 파일의 클래스를 보여 줄 수 있습니다. 메서드를 수동으로 편집할 수도 있으며, 이 경우 메서드 시그니처를 바이트코드 형식으로 입력해야 합니다.

클래스의 경우 선택한 클래스의 모든 public 메서드가 트랜잭션을 생성합니다. 상속 옵션이 켜져 있으면 파생 클래스의 메서드 선택에 대해 두 가지 전략 중에서 선택할 수 있습니다.
- 구현하거나 재정의하는 public 메서드: 관심 있는 모든 작업을 해당 메서드로 정의하는 인터페이스를 선택한 경우에 적합합니다. 구현 클래스의 추가 public 메서드는 무시됩니다.
- 모든 public 메서드: 선택한 클래스가 기본 클래스 또는 마커 인터페이스일 수 있으며 관심 있는 메서드가 파생 클래스에 있습니다. 이 경우 파생 클래스의 모든 public 메서드가 트랜잭션을 생성합니다.
트랜잭션 메서드를 수집하는 추가 방법으로 정적 메서드를 선택할 수 있습니다. 상속 옵션이 선택되고 모든 public 메서드가 사용되는 경우 파생 클래스의 public 정적 메서드도 수집됩니다.
매핑 트랜잭션에 사용할 수 있는 명명 요소 외에도 매칭 메서드 트랜잭션에는 “메서드 매개변수” 명명 요소가 있습니다. 메서드 매개변수 가로채기는 특정 메서드가 선택된 경우에만 의미가 있으므로 매칭 클래스 트랜잭션에는 사용할 수 없습니다.

0부터 시작하는 인덱스로 매개변수를 선택할 수 있습니다. 또한 매핑 트랜잭션에 설명된 “인스턴스 이름” 요소와 마찬가지로 매개변수에 게터 체인을 적용할 수 있습니다.

