[spring] JDBC

sesame·2021년 8월 23일

Spring

목록 보기
7/12

JDBC

데이터베이스를 다루기 위한 자바 API로 JDBC를 통한 질의문으로써 DBMS와 관계없이 원하는 데이터를 수신합니다.

동작순서
1. JDBC드라이버 load

Class.forName(driver);
  1. DB연결
Connection conn = DriverManager.getConnection(url, uid, pwd);
  1. DB 작업
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);  //값이 여러개로 구해지는 경우
stuList = new ArrayList<StudentVO>();
while(rs.next()) {  // rs.next() 1행을 읽어올것이 없다면 false, 읽어나올 것이 있다면 읽어 나온 값을 가지고 있음.
	StudentVO vo = new StudentVO();
	//vo.setStuno(rs.getInt(1)); 와 밑은 같은 코드
        vo.setStuno(rs.getInt("empno"));
}
PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, vo.getName());
int result = ps.executeUpdate(); //변경후 반환하는 결과값이 행의 개수인 경우
  1. DB연결해제
conn.close(); st.close();

커넥션 풀(Connection Pool)

DB Connection을 여러개 생성하여 저장해놓고, 여러 사용자가 필요할 때마다 하나씩 꺼내서 사용하고 다시 집어 넣는 방식

  • 속도 향상, 재사용, Connection 객체 수 제어 가능

JNDI

디렉토리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API입니다.

📋JDBC/JNDI 차이
기존의 JDBC로는 커넥션풀을 이용하는데 성능적으로 좋지 않아서 만들어졌다.
테이블 이름, 사용자이름, 비밀번호 등을 여러 개 변경 사용할 필요가 있을 경우, 다른 DBMS를 여러 개 변경 사용할 필요가 있을 경우, JDBC 설정인 커넥션 풀, 인자를 바꿀 필요가 있을 경우에 사용합니다.

Driver.properties

properties 파일을 따로 관리하는 이유는 은닉하기 위해서이다.

#Driver.properties
driver = ~
url = ~
user = ~
pwd = ~

🚨이거를 소스코드로 올리지 않도록 주의!!

--디자인 패턴

싱글톤 패턴

최초의 한번만 메모리를 할당(static)하고 그 메모리에 인스턴스를 만들어서 사용하는 디자인 패턴
여러차례 호출되더라도 실제 생성되는 객체는 하나!!

Class Example {
	Example e = new Example();
}
public static Example getInstance(){
	return e;
}
Example e1 = Example.getInstance();
Example.e1

JDBC 프로젝트 구현

구성

Model - Service, Dao, Vo
View - View
Controller - Controller

🤔View → Controller → Service → Dao → Vo

0개의 댓글