본문 바로가기
Programming/Spring

[spring] 데이터 접근 디자인 패턴

by NAMP 2016. 4. 23.

[spring] 데이터 접근 디자인 패턴

Template Method Pattern

JDBC 개념

인터페이스만 보고 작업을 한다.
JDBC DRIVER 를 사용한다.

JDBC 구현 순서

특정 DBMS 에ego당하는 Driver 로딩
DBMS 와의 Connection 연결
Statement 객체 생성
SQL 문에 파라미터 정보 설정
Statement 실행
ResultSet 처리하기 위한 Loop 문 실행
예외처리
트랜잭션 처리
Connection 해제

기본형태 생성

Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
int result = 0;

try {
con = JDBCUtil.getConnection();
    ps = con.prepareStatement(sql);
    // prepareStatement Setter
    // 실행
    // 결과값 핸들링
} catch (Exception e) {
    e.printStackTrace();
} finally {
JDBCUtil.close(rs, ps, con);            
}

테스트 코드 작성

public static void main(String[] args) {
    String[] config = {"applicationContext.xml"};
    ApplicationContext context = new ClassPathXmlApplicationContext(config);
    
    UserService service = (UserService) context.getBean("service");
    
    UserVO user = new UserVO();
    user.setUserid("java01");
    user.setUserpwd("1234");
    user.setUsername("홍씨");
    user.setAddress("서울시");
    user.setEmail("hong@n.com");
    user.setPhone("000-0000-0000");
    service.addUser(user);
    
    System.out.println("======= list ======");
    for(UserVO data: service.getUserList()){
        System.out.println(data);
    }
}

삭제 구문 추가후 다시 확인

service.removeUser(user.getUserid());
        
System.out.println("======= list ======");
for(UserVO data: service.getUserList()){
    System.out.println(data);
}

수행결과

======= list ======
UserVO [userid=java01, username=홍씨, userpwd=1234, email=hong@n.com, phone=000-0000-0000, address=서울시]
UserVO [userid=admin, username=관리자, userpwd=a1234, email=admin@mc.co.kr, phone=02-1234, address=서울 역삼]
UserVO [userid=user01, username=길동이, userpwd=1234, email=hong@mc.co.kr, phone=00-0000, address=서울]
======= list ======
UserVO [userid=admin, username=관리자, userpwd=a1234, email=admin@mc.co.kr, phone=02-1234, address=서울 역삼]
UserVO [userid=user01, username=길동이, userpwd=1234, email=hong@mc.co.kr, phone=00-0000, address=서울]

업데이트 구문 완성

    @Override
    public int updateUser(UserVO user) {
        String sql = "update userinfo set email=?,phone=?,address=? where userid  = ? ";
        
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        int result = 0;

        try {
        con = JDBCUtil.getConnection();
            ps = con.prepareStatement(sql);
            // prepareStatement Setter
            ps.setString(1, user.getEmail());
            ps.setString(2, user.getPhone());
            ps.setString(3, user.getAddress());
            ps.setString(4, user.getUserid());            
            // 실행
            result = ps.executeUpdate();
            // 결과값 핸들링
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.close(rs, ps, con);
        }
        
        return result;
    }


'Programming > Spring' 카테고리의 다른 글

[spring] iBatis, MyBatis Framework 아키텍처  (0) 2016.04.24
[Spring] JDBC 설정  (0) 2016.04.24
[spring] 다국어 지원  (0) 2016.04.22
[spring] Annotation 기반 AOP 설정  (0) 2016.04.22
[spring] XML 기반 AOP 설정  (0) 2016.04.21

댓글