Java Spring Boot - JDBC 프로그래밍

1 분 소요

MVC Pattern

  • Model : 업무로직 → 영속데이터 (dbms; oracle, mysql)
  • View : html / jsp
  • Controller : Servlet

JDBC 프로그래밍 기본 절차

  • DBMS 설치, JDBC API(JavaSE 포함), JDBC Driver (oracle: ojdbc6.jar) 필요

    • ojdbc6.jar 위치 : jdk\jre\lib\ext>

    • JDBC API : java.sql, → 웹 추가 api : 이제 javax.sql, javax.naming 을 사용

    • JDBC 환경설정 (property) : 소스코드 하드코딩(유지보수 문제발생)

      ⇒ 별도 파일로 분리설계 : context.xml (시스템단위, 프로젝트단위)

  • 순서

    1. JDBC driver 메모리 로딩
    2. db 연결
    3. sql 통로개설 : Statement, PreparedStatement (전용통로, sql문자열변환편리, sql injection 보안이슈 해결), CallableStatement
    4. sql 수행요청 : CRUD
    5. 결과처리
    6. 자원해제

웹 데이터베이스 연결

  • sql 스크립트 파일 이용한 테이블 및 초기화 레코드 생성 → member 테이블
  • 회원 테이블 매핑 도메인 클래스 : Member.java
  • 회원 테이블 dao 클래스 : MemberDao.java
  • 회원관리 서비스 클래스 : MemberServices.java

Database 웹 연결

  • DataSource Connection Pool 사용
  • DB 연결 관련 리소스 파일 분리 설계
  • javax.sql., javax.naming.
  • tomcat\conf> context.xml (시스템 단위 환경설정)
  • project\META-INF> context.xml (프로젝트 단위 환경설정)

tomcat\conf>context.xml

  • DataSource Connection Pool 관련 환경설정
<?xml version="1.0" encoding="UTF-8"?>

<Context>
	<WatchedResource>WEB-INF/web.xml</WatchedResource>
	<Resource auth="Container" 
		driverClassName="oracle.jdbc.driver.OracleDriver" 
		maxActive="20" 
		maxIdle="2" 
		maxWait="-1" 
		name="jdbc/Oracle11g" 
		username="hr"
		password="tiger" 
		type="javax.sql.DataSource"
		url="jdbc:oracle:thin:@localhost:1521:XE"  />
</Context>

DAO에서 DataSource Connection Pool에 생성된 Connection 객체 가져오기

public Connection getConnection() {
	Connection conn = null;
	
	try {
		Context context = new InitialContext(); // NamingException
		DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/Oracle11g");
		conn = ds.getConnection(); // SQLException
	} catch (Exception e) { // NamingException, SQLException
		e.printStackTrace();
	}
	return conn;
}FactoryDao.java, MemberDao.java, DomainDao.java 

JNDI

— Naming & Directory Interface

JDBC Pattern

— DTO Pattern : Member.java

— DAO Pattern : MemberDao.java, DomainDao.java 등

Factory Pattern

— FactoryDao.java

  • DAO와 관련된 공통 기능을 분리 설계
  • Connection 객체 가져오기
  • 자원해제

Singleton Pattern

  • 하나의 클래스에 대해서 단일 instance(단일 객체)로 사용하기 위한 설계 방법

  • DAO 관련 클래스에 반영 설계

    • FactoryDao.java, MemberDao.java, DomainDao.java 등
  • 설계 규칙:

    1. private 생성자 (다른 사람이 만들 수 없도록)
    2. private static 클래스이름 instance = new 클래스이름(); 멤버변수 선언 및 객체 생성
    3. public static 클래스이름 getInstance() { return instance; }
  • Singleton Pattern 적용 클래스 사용방법:

    • 직접 객체 생성 접근 불가: 1.private 생성자

    • getInstance() 메서드를 통해서 객체 반환받아서 사용

      ⇒ 클래스이름 참조변수명 = 클래스이름.getInstance();

댓글남기기