[Spring] 동적쿼리 & 트랜잭션

박세윤·2023년 4월 20일
0

Spring

목록 보기
8/11
post-thumbnail

📖 Java Config & 동적 SQL

📌 Java Config


✅ Spring DI

  • XML

  • Annotation

  • Java



✅ Java Config

@Configuration
public class ApplicationConfig {
	
    @Bean
    public Desktop desktop() {
    	return new Desktop():
    }
    
    @Bean
    public Laptop laptop() {
    	return new Laptop();
    }
}
@Configuration
@ComponentScan(basePackages = {"com.ssafy.di"})
public class ApplicationConfig {

}
public class Test {
	public static void main(String[] args) {
    	// ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
        ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.classs);
    }
}



📌 MyBatis - 동적 SQL


✅ 동적 SQL

  • Runtime 시점에서 사용자의 입력 값에 따라 동적으로 SQL을 생성하여 실행하는 방식

  • JDBC나 다른 Framework 사용 시 어려움을 느낄 수 있음

  • MyBatis는 이를 편리하게 사용할 수 있게 도와줌

  • JSTL이나 XML 기반의 텍스트 프로세서를 사용해본 사람에게는 친숙할 것



✅ MyBatis 동적 SQL 종류

  • If

  • choose(when, otherwise)

  • trim(where, set)

  • foreach



✅ MyBatis 동적 SQL 예시



📌 Spring TX


✅ Spring TX

  • 데이터 무결성을 위해서 사용

  • 스프링에서 제공하는 트랜잭션 기능을 활용할 수 있음

  • jar or pom.xml을 이용하여 등록

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>${org.springframework-version}</version>
</dependency>



✅ Spring TX 사용

  • 트랜잭션 관리자 설정
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<constructor-arg ref="dataSource"></constructor-arg>
</bean>
  • 어노테이션 기반 트랜잭션 설정
<tx:annotation-driven transaction-manager="transactionManager" />
  • 메소드나 클래스에 @Transactional이 선언되어 있으면, AOP를 통해 트랜잭션 처리
@Transactional
public int insert(Movie movie) {
	return movieDao.insert(movie);
}
profile
개발 공부!

0개의 댓글