웹 개발

DAO 버전 UP하기

_KH_ 2025. 5. 2. 00:08

[ Model 파트 ] - DAO 버전 UP 하기

DAO를 버전 업 하는 방법에 대해 학습했다.

“성능 최적화” 를 드러내자

 

기존의 DAO VS 새로운 DAO

  1. 기존 DAO
  • JDBCUtil이라는 아주 대표적인 공통로직(횡단관심)을 사용함

(JDBCUtil은 ctrl + c, v이므로 모듈화(성능 최적화)를 함)

(4단계(conn, pstmt, 실행, close를 통해 진행함. 이 중 “실행”만 핵심로직이고 나머지 3개가 공통 로직.)

  1. 새로운 DAO
  • “Template 패턴” (MVC, 싱글톤, 팩토리, 템플릿, .. 등등의 패턴 존재)
  • 반복적인 로직 OR 복잡한 로직을 모듈화한 클래스
  • JDBC Template 클래스를 Spring에서 제공 중이다.
  • pom.xml에 dependency 추가

템플릿 사용하여 DAO 구현하기(JDBC)

사용방법

  1. 라이브러리 추가
<!-- JDBC를 위한 라이브러리 추가 -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>6.1.6</version>
      </dependency>
      <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.4</version>
      </dependency>

2. 스프링 컨테이너가 new하려면? applicationContext.xml에서 설정하기! “<bean>”

   <bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource" destroy-method="close">
      <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
      <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
      <property name="username" value="teemo" />
      <property name="password" value="1234" />
   </bean>
   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
      <property name="dataSource" ref="dataSource" />
   </bean>

3. DAO 바꾸기

@Autowired // 의존성 주입(DI)
private JdbcTemplate jdbcTemplate;

public boolean insert(BoardVO vo) {
	int result

3-1. DI가 안되면 메서드를 실행할 수 없다. (@Autowired)

3-2. DI 한다고 써놓아도 메모리에 객체가 없으면 실행이 안된다. DI 할 객체를 NEW 해주지 않으면 메서드 실행 불가 (@Bean) (즉, DI할 대상이 있어야 DI도 가능하다는 것)

→ 참고로 해당 클래스 내에서 생성자 주입으로 new 하지말고, applicationContext.xml에서 해야함

3-3. 메서드 실행 주체(클래스)도 NEW를 해줘야 (@Component) 실행 가능

3가지 모두를 new 해줘야만 메서드 실행이 가능하다.

※ DAO에는 @Component 대신 @Repository 달아주면 됨!