본문 바로가기

청년취업아카데미/DayLog

[ JSP ] Day 12 - ① JAVA BEANS

# JAVA BEANS 사용하기

  1. 데이터베이스에 테이블 생성
  2. DBCP을 이용하여 데이터베이스 연결 설정 관리
  3. DAO/DTO 설계후 클래스 작성
  4. Web에서 이용(JSP)

 

1. 데이터베이스에서 테이블 생성

예제 : Member1

  • code
...더보기
--------------------------------------------------------
--  DDL for Table MEMBER1
--------------------------------------------------------
DROP  TABLE   Member1;

CREATE TABLE MEMBER1
        ( id                      VARCHAR2(10) 
         CONSTRAINT PK_MEMBER1_ID PRIMARY KEY,    -- ID
         password       VARCHAR2(20),    -- 비밀번호
         name                VARCHAR2(100),   -- 이름 
         reg_date         Date                   -- 일자
       )  TABLESPACE "SYSTEM" ;

Insert into SCOTT.MEMBER1 (ID,password,NAME,REG_DATE) 
values ('aa','1234','김유신',to_date('17/06/18' ,'RR/MM/DD'));
  • SQL file

 

2. DBCP를 이용한 데이터베이스 연결 설정 관리

DBCP란? Database Connection Pool의 약자로 DB설정을 관리한다. WebContent의 META-INF 폴더 아래 context.xml 파일을 생성하고 DB설정을 넣어준다.

  • code
...더보기
<Context>
	<!-- Oracle 설정 잡아놓음 -->
	<Resource name="jdbc/OracleDB" auth="Container"
		type="javax.sql.DataSource" username="scott" password="tiger"
		driverClassName="oracle.jdbc.driver.OracleDriver"
		factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
		url="jdbc:oracle:thin:@127.0.0.1:1521:xe" maxActive="100" maxIdle="10" />

		<!-- dbcp: database connection pool -->

	<!-- MySQL 설정 잡아놓음 -->
	<Resource name="jdbc/MySql" auth="Container"
		type="javax.sql.DataSource" username="root" password="mysql"
		driverClassName="com.mysql.jdbc.Driver"
		factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
		url="jdbc:mysql://localhost:3306/test" maxActive="100" maxIdle="10" />
</Context>
  • file

 

3. DAO/DTO 클래스 정의하기

  • DAO와 DTO란?
    • DAO는 Data Access Object의 약자로 데이터객체와 DB와의 연결을 담당한다.
    • DTO는 Data Transfer Object의 약자로 전송에 사용되는 객체를 담는 역할을 한다.
      • DTO vs VO: DTO는 Read and Write가 가능하나, VO는 보통 Read Only로 사용된다.
  • DTO에서는 데이터베이스의 테이블을 자바의 객체로 정의한다. 테이터베이스의 속성은 자바의 속성으로 연결된다.
...더보기

DTO 클래스에서는 속성, 생성자, setter와 getter를 생성한다.

package util;

import java.util.Date;

public class MemberDTO {
	private String id;
	private String password;
	private String name;
	private Date reg_date;
	
	
	/* Constructors */
	public MemberDTO() {} // default
	public MemberDTO(String id, String password, String name) { // 객체 삽입시 사용하는 생성자
		this.id = id;
		this.password = password;
		this.name = name;
	}
	
	public MemberDTO(String id, String password, String name, Date reg_date) { // 객체의 정보를 받아올 때 사용하는 생성자
		this(id, password, name);
		this.reg_date = reg_date;
		
	}
	
	
	/* getters and setters method */
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getReg_date() {
		return reg_date;
	}
	public void setReg_date(Date reg_date) {
		this.reg_date = reg_date;
	}
	
	
}
  • DAO에서는 데이터베이스를 연결한다
...더보기

DAO 클래스 작성 - 디비연결

Context객체에서 oracle을 찾는다.

package util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	private Connection getConnection() {
		Connection conn = null;
		try {
			Context ctx = new InitialContext();
			DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/OracleDB");
			conn = ds.getConnection();
		}catch(SQLException e) {
			System.err.println(" * Error 이유 : Database 구문 오류, "+e.getMessage());
		}catch (Exception e) {
			System.err.println(" * Error 이유 : "+e.getMessage());
		}
		return conn;
	}
	
	public int insert(MemberDTO member) throws SQLException {
		Connection conn = null;
		PreparedStatement psmt = null;
		int result = 0;
		
		try {
			conn = getConnection();
			psmt = conn.prepareStatement("INSERT INTO Member1 VALUES (?,?,?,sysdate)");
			psmt.setString(1, member.getId());
			psmt.setString(2, member.getPassword());
			psmt.setString(3, member.getName());
			result = psmt.executeUpdate();
		}catch(SQLException e) {
			System.err.println(" * Error 이유 : Database 구문 오류, "+e.getMessage());
		}catch(Exception e) {
			System.err.println(" * Error 이유 : "+e.getMessage());
		}finally {
			if(psmt != null) psmt.close();
			if(conn != null) conn.close();
		}
		
		return result;
	}
}

 

4. Web에서 사용하기

: Web에서 DAO와 DTO 클래스를 import 하여 연산수행

회원가입을 통해 데이터베이스에 Insert 작업(회원 가입하기)을 수행