1. Repository
1) @JpaRepository : CRUD 기능 제공
2) @Repository : 구현 기능 없음, 다음과 같은 경우에 활용함
→ select만 구현하고 싶은 경우 @JpaRepository를 쓰지않고 사용하여 직접 select만 구현
→ @NoRepositoryBean 처리해서 bean으로 등록되지 않도록
3) @Query : 임의로 쿼리 만들고 싶을 때
2. Entity, DataSource
1) Entity
- DB에 저장(Persist)할 자바 객체를 정의
- 테이블 스키마와 완벽히 일치할 필요X
- 하나의 도메인으로 간주
- sequence, data 등 jpa에서 자동으로 설정해주는 어노테이션 제공
2) DataSource
- 물리적인 데이터소스(DB) 정보를 담는 interface
- 하나의 물리 DB를 표현
- 다양한 구현체를 사용
3. Transaction
1) TransactionManager
- 스프링 트랜잭션 관리 기능을 담당하는 interface
- 용도에 따라 다양한 인터페이스와 구현체들
2) JPA DB 수동설정(Java Code)
- 자바코드로 DataSource, TransactionManager를 수동 세팅해야하는 경우가 있다
ex) configuation properties로 커버되지 않는 세밀한 옵션을 줄 때, 다중 DataSource를 사용할 때
- 세팅해야하는 요소
: DataSource
, EntityMangaerFactory(→LocalContainerEntityMnagerFactoryBean : 추가적인 예외 처리 기능 때문에, 인터페이스 말고 구현체를 직접 빈으로 등록해야한다)
, Platform TransactionManger
- 세팅 구성
: DataSource(DB설정) → EntityMangerFactory(JPA entity 관리) → PlatformTransactionManager(트랜잭션관리)
3) @Transactional
- 스프링이 annotation 기반 트랜잭션 관리 기능 제공
- @JpaRepositary는 이미 메소드단위로 @Transactionl이 선언되어 있음
- Business logic(service단 method)에 적용
- Transacation annotation
4) @Transaction 제공 옵션
- transactionManager(value) : 사용할 transaction mangaer 이름 특정
- label : transaction을 구분짓고 식별하는 레이블
- propagation : transaction이 중첩될 경우 동작 규칙(default : REQUIRED)
- isolation : transaction 내부 데이터의 격리 레벨(default : DEFAULT)
- timeout, timeoutString : 시간 제한 설정
- readOnly : 해당 transaction 에서는 select만 수행된다 를 표현
+ 강제성이 없음(like 힌트),
참고)
'프로그래밍 > SPRING' 카테고리의 다른 글
[SPRING] RestTemplate, SSL, TLS, Proxy(+UrlConnection, HttpClient, WebClient) (0) | 2022.09.19 |
---|---|
[SPRING] 대량 Insert : mybatis foreach vs sqlSession batch (0) | 2022.08.02 |
한끝완3 (0) | 2022.05.27 |
한끝완2 (0) | 2022.05.23 |
한끝완1 (0) | 2022.02.20 |