Spring 시리즈 메모 해석 중점 해석 @transactional
6197 단어 springboot
spring 메모
No.1 트랜잭션 메모 방식: @Transactional
1. 클래스 앞에 표시할 때 클래스에 표시된 모든 방법은 사물 처리를 한다. 예:
@Transactional
public class TestServiceBean implements TestService {
private TestDao dao;
public void setDao(TestDao dao) {
this.dao = dao;
}
// :
@Transactional(propagation =Propagation.NOT_SUPPORTED)
public List getAll() {
return null;
}
}
사물 전파 행위 소개:
@Transactional(propagation=Propagation.REQUIRED): 사무가 있으면 사무를 추가하고 없으면 새로 만들기(기본값)@Transactional(propagation=Propagation.NOT SUPPORTED): 용기가 이 방법으로 사무를 열지 않습니다. @Transactional(propagation=Propagation.REQUIRES NEW): 사무가 존재하든 존재하지 않든 새로운 사무를 만듭니다. 원래 끊고 새 사무를 실행합니다.오래된 업무를 계속 수행합니다 @Transactional (propagation=Propagation.MANDATORY): 이미 있는 업무에서 실행해야 합니다. 그렇지 않으면 이상 @Transactional (propagation=Propagation.NEVER): 없는 업무에서 실행해야 합니다. 그렇지 않으면 이상 (Propagation.MANDATORY와 반대로) @Transactional (propagation=Propagation.SUPPORTS): 이 방법을 다른 bean이 방법으로 호출하면다른 bean에서 사무를 성명하면 사무를 사용합니다.만약 다른 bean이 사무를 성명하지 않았다면 사무를 할 필요가 없습니다.
트랜잭션 시간 초과 설정:
@Transactional (timeout=30)//기본값은 30초
트랜잭션 격리 수준:
@Transactional (isolation = Isolation.READ UNCOMMITTED): 제출되지 않은 데이터를 읽기(더러운 읽기, 중복 읽기 불가): 기본적으로 @Transactional (isolation = Isolation.READ COMMITTED): 제출된 데이터를 읽기(중복 읽기 불가 및 읽기 불가) @Transactional (isolation = Isolation.REPEATABLE READ): 중복 읽기 가능(환독 불가) @Transactional Isolation IZilation.: 직렬
MYSQL: 기본값은 REPEATABLEREAD 레벨 SQLSERVER: 기본값은 READCOMMITTED
더러운 읽기: 한 사무가 다른 사무에 제출되지 않은 업데이트 데이터를 읽으면 중복 읽을 수 없다. 같은 사무에서 같은 데이터를 여러 번 읽으면 되돌아오는 결과가 다르다. 다시 말하면 후속 읽기는 다른 사무가 제출한 업데이트 데이터를 읽을 수 있다.반대로'중복 읽기 가능'은 같은 업무에서 데이터를 여러 번 읽을 때 읽은 데이터와 같다. 즉, 후속 읽기는 다른 업무가 제출한 업데이트 데이터를 읽을 수 없다. 한 업무는 다른 업무가 제출한 insert 데이터를 읽을 수 있다.
@Transactional 메모에서 자주 사용하는 매개변수 설명
매개변수 이름
기능 설명
readOnly
이 속성은 현재 업무가 읽기 전용인지 설정하는 데 사용되며,true로 설정하면 읽기 전용이고,false는 읽기 전용이며, 기본값은false입니다.예: @Transactional (readOnly=true)
rollbackFor
이 속성은 스크롤이 필요한 이상 클래스를 설정하는 데 사용되며, 방법에서 지정한 이상 클래스의 이상을 던지면 사무 스크롤을 진행합니다.예를 들면 다음과 같습니다.
단일 예외 클래스 지정: @Transactional (rollbackFor=RuntimeException.class)
여러 예외 클래스 지정: @Transactional(rollbackFor={RuntimeException.class,Exception.class})
rollbackForClassName
이 속성은 스크롤이 필요한 이상 클래스 이름 그룹을 설정하는 데 사용되며, 방법에서 지정한 이상 이름 그룹의 이상을 던지면 사무 스크롤을 진행합니다.예를 들면 다음과 같습니다.
단일 이상 클래스 이름 지정: @Transactional (rollback ForClassName = "Runtime Exception")
여러 개의 이상 클래스 이름 지정: @Transactional (rollback ForClassName={"Runtime Exception", "Exception"})
noRollbackFor
이 속성은 스크롤이 필요 없는 이상 클래스 그룹을 설정하는 데 사용되며, 방법에서 지정한 이상 클래스의 이상을 던질 때 사무 스크롤을 하지 않습니다.예를 들면 다음과 같습니다.
단일 예외 클래스 지정: @Transactional(noRollbackFor=RuntimeException.class)
여러 예외 클래스 지정: @Transactional(noRollbackFor={RuntimeException.class,Exception.class})
noRollbackForClassName
이 속성은 스크롤이 필요 없는 이상 클래스 이름 그룹을 설정하는 데 사용되며, 방법에서 지정한 이상 이름 그룹의 이상을 던질 때 업무 스크롤을 하지 않습니다.예를 들면 다음과 같습니다.
단일 이상 클래스 이름 지정: @Transactional(noRollbackForClassName="RuntimeException")
여러 예외 클래스 이름 지정:
@Transactional(noRollbackForClassName={“RuntimeException”,“Exception”})
propagation
이 속성은 업무의 전파 행위를 설정하는 데 사용되며, 구체적인 수치는 표 6-7을 참고할 수 있다.
이 속성은 베이스 데이터베이스의 사무 격리 단계를 설정하는 데 사용되며, 사무 격리 단계는 여러 사무를 처리하고 병발하는 경우에 사용되며, 통상적으로 데이터베이스의 기본 격리 단계를 사용하면 되며, 기본적으로 설정할 필요가 없다.
timeout
이 속성은 업무의 시간 초과 초수를 설정하는 데 사용되며, 기본값은 -1로 시간 초과가 없음을 나타냅니다.
2. 스프링 사무 관리자로 스프링이 데이터베이스의 열기, 제출, 스크롤을 책임진다.기본적으로 런타임 예외가 발생합니다.검사되지 않는 예외가 있을 때 스크롤합니다.캡처가 필요한 예외(throw new Exception(주석);스크롤하지 않습니다. 즉, 검사된 예외 (실행되지 않을 때 던진 이상, 컴파일러가 검사한 이상을 검사받은 예외 또는 검사받은 이상이라고 함) 를 만났을 때, 모든 이상을 스크롤할 수 있는 방법을 지정해야 합니다. @Transactional (rollback For = {Exception.class, 기타 이상) 을 추가해야 합니다.unchecked 예외를 스크롤하지 않으려면 @Transactional (notRollbackFor=RunTimeException.class) 은 다음과 같습니다.
@Transactional(rollbackFor=Exception.class) // , Exception
public void methodName() {
throw new Exception(" ");
}
@Transactional(noRollbackFor=Exception.class)// , (throw new RuntimeException(" ");)
public ItimDaoImpl getItemDaoImpl() {
throw new RuntimeException(" ");
}
3. @Transactional 주석은 공공 가시도 방법에만 적용되어야 합니다.보호자,private,package-visible 방법에서 @Transactional 주석을 사용하면 오류가 발생하지 않지만, 이 주석이 있는 방법은 설정된 업무 설정을 보여 주지 않습니다.
4. @Transactional 주석은 인터페이스 정의와 인터페이스 방법, 클래스 정의와 클래스의public 방법에 적용될 수 있습니다.그러나 @Transactional 주석만 나타나는 것은 업무를 시작하는 행위에 부족합니다. 이것은 단지 하나의 메타데이터일 뿐입니다. @Transactional 주석과 상기 설정이 적당한 업무 행위를 가진 beans를 식별할 수 있습니다.위의 예에서 사실은 원소의 출현이 사무 행위를 열었다.
5. Spring팀의 조언은 구체적인 클래스(또는 클래스의 방법)에 @Transactional 주석을 사용하고 클래스가 실현하고자 하는 인터페이스에 사용하지 않는 것입니다.인터페이스에 @Transactional 주석을 사용할 수 있지만, 인터페이스 기반 에이전트를 설정했을 때만 적용됩니다.주석은 계승할 수 없기 때문에, 클래스 기반 에이전트를 사용하고 있을 때, 클래스 기반 에이전트에 의해 사무의 설정이 식별되지 않을 뿐만 아니라, 대상도 클래스 기반 에이전트에 의해 포장되지 않을 것이다. (심각한 것으로 확인될 것이다.)따라서 Spring팀의 조언을 받아들여 구체적인 클래스에 @Transactional 주석을 사용하십시오.
No.2 @Controller: 클래스 사용 주석 주석을 bean으로 사용할 수 있습니다. @RequestMapping: URL 전달 @RequestBody: 앞에서 전송된 데이터를 가져옵니다. 보통 json 데이터 @Responsebody: 앞에서 응답합니다. @RequestParam:매개 변수 가져오기
No.3 springboot 메모
@SpringBootApplication: 클래스 메모 시작 세 메모 작성: 1.@ComponentScan,2.@SpringBootConfiguration(구성);3. @Enable AutoConfiguration(자동 구성 시작)
@EnableScheduling: 시작 클래스가 열릴 때 @ComponentScan: 현재 패키지와 하위 패키지가 @Component, @Controller, @Service, @Repository 주석에 표시된 클래스를 스캔하고spring 용기 관리에 포함합니다.... 에 상당하다
JPA 메모
@Entity: 이 클래스가 실체 클래스임을 나타냅니다 @TableName ("user"): 데이터베이스에 연결된 테이블 이름 (일반적으로 자동으로 테이블을 만들 때 사용) @Id: 하나의 속성에 추가하기 전에 이 속성이 메인 키임을 나타냅니다 @Colum: 실체 클래스와 데이터베이스 필드가 일치하면 생략할 수 있고 일치하지 않으면 이 주석을 사용할 수 있습니다 @Transactional: 인터페이스, 인터페이스 방법, 클래스 및 방법에 사용할 수 있습니다. 사물 속성을 갖추도록 합니다.
[문장 부분 내용 발췌] (https://www.cnblogs.com/caoyc/p/5632963.html )
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.