데이터베이스를 다루기 위한 자바 API로 JDBC를 통한 질의문으로써 DBMS와 관계없이 원하는 데이터를 수신합니다.
동작순서
1. JDBC드라이버 loadClass.forName(driver);
- DB연결
Connection conn = DriverManager.getConnection(url, uid, pwd);
- 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(); //변경후 반환하는 결과값이 행의 개수인 경우
- DB연결해제
conn.close(); st.close();
DB Connection을 여러개 생성하여 저장해놓고, 여러 사용자가 필요할 때마다 하나씩 꺼내서 사용하고 다시 집어 넣는 방식
디렉토리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API입니다.
📋JDBC/JNDI 차이
기존의 JDBC로는 커넥션풀을 이용하는데 성능적으로 좋지 않아서 만들어졌다.
테이블 이름, 사용자이름, 비밀번호 등을 여러 개 변경 사용할 필요가 있을 경우, 다른 DBMS를 여러 개 변경 사용할 필요가 있을 경우, JDBC 설정인 커넥션 풀, 인자를 바꿀 필요가 있을 경우에 사용합니다.
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
Model - Service, Dao, Vo
View - View
Controller - Controller
🤔View → Controller → Service → Dao → Vo