# JAVA BEANS 사용하기
- 데이터베이스에 테이블 생성
- DBCP을 이용하여 데이터베이스 연결 설정 관리
- DAO/DTO 설계후 클래스 작성
- 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 하여 연산수행
'청년취업아카데미 > DayLog' 카테고리의 다른 글
[ JS ] Day 12 - ① JavaScript 기본 (0) | 2019.07.25 |
---|---|
[ JSP ] Day 12 - ② File Upload (0) | 2019.07.25 |
[ JSP ] Day 10 - ④ 서블릿(Servlet) (0) | 2019.07.24 |
[ JSP ] Day 11 - ① JSTL (0) | 2019.07.24 |
[ JSP ] Day 10 - ③ Error Page 정의하기 (0) | 2019.07.23 |