[SPRING] 게시판만들기 12 [AOP/ SpringJDBC]

🐷Jinie (juniorDeveloper)·2020년 12월 4일
0

JSP/MVC/SPRING

목록 보기
62/81

1. Spring JDBC Template 사용하기

참고자료:
1.절차
1) DB와의 연결 : DataSource
2) 명령문 실행 : JdbcTemplate
3) 결과를 받아옴 : RowMapper

  1. DataSource
    1) org.springframework.jdbc.datasource.DriverManagerDataSource
    - 스프링안에있는 datasource를 통해 접근
    2) org.springframework.jndi.JndiObjectFactoryBean
    - jndi방식을 통해 접근

  2. JdbcTemplate
    1) org.springframework.jdbc.core.JdbcTemplate
    : db와 연결만 가능
    query(), update()
    2) org.springframework.jdbc.core.support.JdbcDaoSupport
    : db와 연결할수도 있고, 명령도 내릴수 있다.
    getConnection(), getJdbcTemplate()

  3. RowMapper(org.springframework.jdbc.core) : 결과를 담아오기 위한 인터페이스 - 자동반복
    1) Callback Interface : db로부터 결과를 가져와 내가 필요한 결과에 매핑시키도록 해준다

  4. ResultSetExtractor : 한개의 레코드를 가져올때 일반적으로 사용된다.
    여러개의 레코드를 가져오려면 반복문을 이용해서 가져와야 한다.

  • applicationContext.xml 즉, 비지니스 layer에 설정한다.
<!--  DataSource  설정하기 -->
	<context:property-placeholder  location="classpath:config/database.properties" />
	<bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">
	<property name="driverClassName"  value="oracle.jdbc.OracleDriver" />
	<property name="url"  value="jdbc:oracle:thin:@//localhost:1521/xe"/>
	<property name="username"  value="system" />
	<property name="password"  value="1234" />
	</bean>

<bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource"  ref="dataSource" />
</bean>

2. AOP 설정 적용하기

  • applicationContext.xml 즉, 비지니스 layer에 설정한다.
  • Controller 에서 DAO의 메서드를 직접 호출하면 안되는 이유 중 하나가 AOP적용 때문이다.
  • 모든 비즈니스 컴포넌트의 메서드에서 공통으로 사용할 기능들을 횡단관심. 즉 어드바이스로 구현했다.
  • 횡단관심에 해당하는 어드바이스가 동작하려면 반드시 Service 구현클래스의 비즈니스 메서드가 실행되어야한다.
  • Namespaces에서 tx와 AOP에 체크한다.
<!--  트랜잭션 설정하기  -->
<bean  id="txManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
   <property name="dataSource"   ref="dataSource" />
</bean>

<tx:advice id="txAdvice"  transaction-manager="txManager" >
	<tx:attributes>
		<tx:method name="get*"  read-only="true" />
		<tx:method name="*" />
	</tx:attributes>
</tx:advice>
<aop:config>
	<aop:pointcut id="txPointcut"  expression="execution(* com.springbook.biz..BoardServiceImpl.*(..) )"   />
	<aop:advisor  pointcut-ref="txPointcut"  advice-ref="txAdvice"/>
</aop:config>

3. DAO 설정하기

profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글