[4.25]스프링(AOP, DB연동)
aop
cf) AOP 예제 실습시 에러가 나면 pom.xml에 추가해야할 디펜던시
- xml 설정 사용 : <aop:config>태그 사용
- 자바 설정 사용 : @EnableAspectJAutoProxy애노테이션을 적용 + @Aspect 애노테이션을 적용한 클래스를 빈으로 등록
3.2 AOP 구현 : @Aspect 애노테이션을 이용하면 XML설정이 간단해 진다.(요즘 기법)
3.4 프록시 생성 방식
- 스프링은 AOP를 위한 프록시 객체를 생성할 때, 실제 생성한 빈 객체가 인터페이스를 상속하고 있으면, 인터페이스를 이용해서 프록시를 생성한다.
- 그러나, 빈 객체가 인터페이스를 상속받고 있을 때, 인터페이스가 아닌 클래스를 이용해서 프록시를 생성하고 싶다면 다음과 같은 방법을 이용하면 된다.
-- POJO 방식 XML 설정
-- @Aspect 방식 XML 설정
-- @Aspect 방식 자바 설정
=======================================
"jdbcTemplate"
뭐냐? 왜사용??
1. 반복되는 소스코드 줄임
2. 박스작업
3. 트랜잭션이 쉽다. : @Transactional
DataSource 설정 -> JdbcTemplate 클래스를 이용하여 DB연동
====================
[환경설정] : mysql 이용
: pom.xml에 spring-jdbc, c3p0, mysql-connector-java 추가
: db 테이블 생성
3.DataSource 설정 + memberDao클래스에 JdbcTemplate를 생성하는 코드를 추가 후, 스프링 설정(XML설정)DP MemberDao 빈 설정을 추가
4.1 JdbcTemplate 생성하기
:생성자를 통해 JdbcTemplate 생성함
4.2 JdbcTemplate 을 이용한 조회 쿼리 실행
: JdbcTemplate 클래스는 SELECT 쿼리 실행을 위한 query()메서드를 제공하고 있다.
++ 임의의 클래스를 사용할 수도 있다.
4.3 결과가 1행인 경우의 조회(SELECT) 메서드 : queryForObject()
:주의할 점은 쿼리 실행 결과가 반드시 한 행이어야 한다.
4.4 JdbcTemplate을 이용한 변경 쿼리 실행
:INSERT, UPDATE, DELETE 쿼리를 실행할 때에는 update()메서드를 사용
4.5 PreparedStatementCreator를 이용한 쿼리 실행
: 위에서 사용한 것(쿼리에서 사용할 인자값을 전달)한 것 외에 경우에 따라서 PreparedStatement의 set메서드를 사용해서,
직접 인덱스 파라미터 값을 설정해주어야 할 때가 있다.
4.6 INSERT 쿼리 실행 시, 키홀더를 이용해서 자동 생성 키 값 구하기
: 쿼리 실행 후에 생성도니 키 값을 알고 싶다면, JdbcTemplate에서 자동으로 생성된 키 값을 구할 수 있는 방법을 제공하는 KeyHolder를 사용
하면 된다.
5.MemberDao 테스트(DB 연동 테스트)