본문 바로가기

Java, Spring/17일

17일차 6

spring jdbc

지금부터 Spring 내부에서 지원하는 jdbc,  즉 Spring JDBC를 사용해서 소스를 간략화 시켜볼거야..

 

먼저 java프로그램으로 만들어보고 web은 나중에 만들어보자..

 

우선 일반 jdbc를 사용하는 java프로그램을 만들어보자.

 

Java project로 springdev2만들어..

 

Spring Library 추가하자. springdev2에서 마우스 오른쪽 –> Properties

 

UTF-8설정

 

그리고 src밑에다 springweb3의 test.db package복사해와. 이걸 변형해서 만들자.

 

test.db밑에 Spring Bean Configuration File만들어.(beaninit.xml)

EmpListController에서 DB접속해 데이터 가져오는 부분을 EmpDao로 분리하자.

package test.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


public class EmpDao {

	
	public List<EmpDto> list() {
		Connection cn = null;
		PreparedStatement st = null;
		ResultSet rs = null;		

		String sql = "SELECT e.empno, e.ename, e.sal, d.dname " + 
				 "FROM t_emp e, t_dept d " + 
				 "WHERE e.deptno =d.deptno ORDER BY 1 ASC";
		
		List<EmpDto> list = new ArrayList<EmpDto>();
		
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			cn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava");
			st = cn.prepareStatement(sql);
			rs = st.executeQuery();			
			
			while(rs.next()) {
				EmpDto dto = new EmpDto();
				dto.setEmpno(rs.getInt("empno"));
				dto.setEname(rs.getString("ename"));
				dto.setSal(rs.getInt("sal"));
				dto.setDname(rs.getString("dname"));
				list.add(dto);
			} 	
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {			
			if(rs != null ) try {rs.close();} catch(Exception e) {}
			if(st != null ) try {st.close();} catch(Exception e) {}
			if(cn != null ) try {cn.close();} catch(Exception e) {}
		}
		
		return list;
	}
}

 

EmpDao를 인터페이스로 만들어놓고, 실제구현은 EmpDaoImpl로 하자. 의존관계를 줄이기 위해서야.

EmpDao.java에 F2누르고 EmpDaoImpl로 변경.

package test.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


public class EmpDaoImpl implements EmpDao {

	@Override
	public List<EmpDto> list() {
		Connection cn = null;
		PreparedStatement st = null;
		ResultSet rs = null;		

		String sql = "SELECT e.empno, e.ename, e.sal, d.dname " + 
				 "FROM t_emp e, t_dept d " + 
				 "WHERE e.deptno =d.deptno ORDER BY 1 ASC";
		
		List<EmpDto> list = new ArrayList<EmpDto>();
		
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			cn = DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava");
			st = cn.prepareStatement(sql);
			rs = st.executeQuery();			
			
			while(rs.next()) {
				EmpDto dto = new EmpDto();
				dto.setEmpno(rs.getInt("empno"));
				dto.setEname(rs.getString("ename"));
				dto.setSal(rs.getInt("sal"));
				dto.setDname(rs.getString("dname"));
				list.add(dto);
			} 	
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {			
			if(rs != null ) try {rs.close();} catch(Exception e) {}
			if(st != null ) try {st.close();} catch(Exception e) {}
			if(cn != null ) try {cn.close();} catch(Exception e) {}
		}
		
		return list;
	}
}

package test.db;

import java.util.List;

public interface EmpDao {
	public List<EmpDto> list();
}

 

EmpListController 수정

package test.db;

import java.util.List;

public class EmpListController {

	public void show() {
		
		EmpDao dao = new EmpDaoImpl();
		List<EmpDto> list = dao.list();		

		System.out.println("\t\t사원리스트");
		System.out.println("==================================");

		System.out.print("번호"+ "\t");
		System.out.print("이름"+ "\t");
		System.out.print("급여"+ "\t");
		System.out.print("부서"+ "\n");
		System.out.println("----------------------------------");
		
		for(EmpDto dto: list) {
			System.out.print(dto.getEmpno()+ "\t");
			System.out.print(dto.getEname()+ "\t");
			System.out.print(dto.getSal()+ "\t");
			System.out.print(dto.getDname()+ "\n");
		}
		System.out.println("==================================");
	}	
}

 

beaninit.xml(Spring Bean ConfigurationFile 생성)에 bean 등록

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="emplist" class="test.db.EmpListController" />

</beans>

 

실행위한 EmpMain구현

package test.db;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class EmpMain {

	public static void main(String[] args) {

		ApplicationContext context = 
				new ClassPathXmlApplicationContext("test/db/beaninit.xml");
		EmpListController el = (EmpListController)context.getBean("emplist");
		el.show();	
	}

}

 

EmpList를 인터페이스로 만들고, EmpListController에 implements 시키자.

package test.db;

public interface EmpList {
	public void show();
}

package test.db;

import java.util.List;

public class EmpListController implements EmpList{

	public void show() {
		
		EmpDao dao = new EmpDaoImpl();
		List<EmpDto> list = dao.list();		

		System.out.println("\t\t사원리스트");
		System.out.println("==================================");

		System.out.print("번호"+ "\t");
		System.out.print("이름"+ "\t");
		System.out.print("급여"+ "\t");
		System.out.print("부서"+ "\n");
		System.out.println("----------------------------------");
		
		for(EmpDto dto: list) {
			System.out.print(dto.getEmpno()+ "\t");
			System.out.print(dto.getEname()+ "\t");
			System.out.print(dto.getSal()+ "\t");
			System.out.print(dto.getDname()+ "\n");
		}
		System.out.println("==================================");
	}	
}

 

EmpMain에 적용

package test.db;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class EmpMain {

	public static void main(String[] args) {

		ApplicationContext context = 
				new ClassPathXmlApplicationContext("test/db/beaninit.xml");
		EmpList el = (EmpList)context.getBean("emplist");
		el.show();	
	}

}

 

 

여기까지가 일반jdbc로 구현한거야.. 이제 이걸 spring jdbc로 바꿔볼거라고..

'Java, Spring > 17일' 카테고리의 다른 글

17일차 3  (0) 2012.09.20
17일차 4  (0) 2012.09.20
17일차 5  (0) 2012.09.20
17일차 7  (0) 2012.09.20
17일차 8  (0) 2012.09.20