simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • controllerTest
  • 컨트롤러
  • null
  • 자바프로그래밍
  • 참조변수
  • 404
  • 자바메모리구조
  • scanner #next() #nextLine()
  • 참조타입
  • 스프링
  • 자바
  • JVM메모리구조
  • 자바프로그램

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[DATABASE] 자바를 통한 DB 모듈화
Language/SQL

[DATABASE] 자바를 통한 DB 모듈화

2022. 4. 23. 23:57

■ DB 모듈화 전체 구성

* 화살표 방향은 무시하고 전체적인 흐름만 보세요.

 

■ Connection(서버연결) 관리 객체

  드라이버를 로딩하고, DB 서버와 연결하는 객체 

 

- DAO가 Connection 관리 객체에게 DB 연결

  곧, Connection을 요청하면, Connection 인스턴스를 DAO에게 전달한다.

 

[코드 예시]

package service;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBservice {
	
	static {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			System.out.println("드라이버를 찾을 수 없습니다.");
		}
	}
	
	private static DBservice single = null;
	
	public static DBservice getInstance() {
		
		if (single == null) {
			single = new DBservice();
		}
		
		return single;
		
	}
	
	private DBservice(){
		
	}
	
	public Connection getConnection() throws SQLException{
		
		Connection conn = null;
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "test1";
		String pwd = "test1";
		
		conn = DriverManager.getConnection(url, user, pwd);
		
		return conn;
	}
	
}

 

■ VO (Value Object) : 칼럼의 맴버와 타입을 저장관리하는 객체

  DB의 테이블 칼럼을 필드맴버로 저장한 객체 

 

- 객체지향적으로 데이터의 속성 정보를 저장하는 객체이다.

- 일종의 구조체와 같아 보인다. 

   [Person이라는 객체 안에 name, age, addr]이 등록되는 것과 같이 객체의 속성을 저장한다.

 

Rf. 과거에 DTO (Data Tranfer Object) 라고도 불렀다.

    - VO는 읽기, DTO는 읽기/쓰기 모두 가능한 경우

 

[코드 예시]

package vo;

public class MemberVo {

	int ein;
	String name;
	String addr;
	String ssn; //주민번호
	int hireday;
	String id;
	String pwd;
	
	//Getter, Setter
	public int getEin() {
		return ein;
	}
	public void setEin(int ein) {
		this.ein = ein;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public String getSsn() {
		return ssn;
	}
	public void setSsn(String ssn) {
		this.ssn = ssn;
	}
	public int getHireday() {
		return hireday;
	}
	public void setHireday(int hireday) {
		this.hireday = hireday;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
	
	
}

 

■ DAO (Data Access Object) - DB정보를 CRUD하는 객체

  데이터를 DB에서 불러와, LIST형태로 저장하는 객체   *데이터 CRUD 담당    

 

- 기능 : Create / Read/ Update / Delete

- 메서드 : insert / select / update / delete

 

   selectList()       -->   테이블의 리스트 정보를 선택하여 반환
   insert(VO)       -->   신규 레코드 삽입
   update(VO)     -->    기존 레코드 수정
   delete(칼럼명)  -->   칼럼 삭제

 

[코드 예시]

package dao;

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

import service.DBservice;
import vo.MemberVo;

public class MemberDao {
	
	private static MemberDao single = null;
	
	private MemberDao() {};
	
	public static MemberDao getInstance() {
		
		if (single == null) {
			single = new MemberDao();
		}
		
		return single;
	}
	
	public List<MemberVo> selectList(){
		
		List<MemberVo> list = new ArrayList<MemberVo>();
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = "SELECT * FROM member";
		
		try {
			conn = DBservice.getInstance().getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while (rs.next()) {
				
				MemberVo vo = new MemberVo();
				
				vo.setEin(rs.getInt("ein"));
				vo.setName(rs.getString("name"));
				vo.setAddr(rs.getString("addr"));
				vo.setSsn(rs.getString("ssn"));
				vo.setHireday(Integer.parseInt(rs.getString("hireday"))+1900);
				vo.setId(rs.getString("id"));
				vo.setPwd(rs.getString("pwd"));
				
				list.add(vo);
				
			}
			
		} catch (Exception e) {
			
		} finally {
			try {
				if (rs != null) rs.close();
				if (pstmt != null) pstmt.close();
				if (conn != null) conn.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		
		return list;
	}
	
}

 

'Language > SQL' 카테고리의 다른 글

[DATABASE] PL/SQL 프로시져  (0) 2022.04.27
[DATABASE] MVC 모델 구현 _ 성적 관리 프로그램  (0) 2022.04.25
[DATABASE] PreparedStatement를 사용하여 시큐어코딩하기  (0) 2022.04.21
[DATABASE] JAVA프로그램과 DB 연결하기  (0) 2022.04.21
[DATABASE] JOIN  (0) 2022.04.21
    'Language/SQL' 카테고리의 다른 글
    • [DATABASE] PL/SQL 프로시져
    • [DATABASE] MVC 모델 구현 _ 성적 관리 프로그램
    • [DATABASE] PreparedStatement를 사용하여 시큐어코딩하기
    • [DATABASE] JAVA프로그램과 DB 연결하기
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바