스마트웹앱콘텐츠전문가/프레임워크

[4.25]스프링(AOP, DB연동)

9D4U 2016. 4. 25. 11:27
728x90
반응형

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 연동 테스트)




728x90