데이터베이스
- 데이터의 저장소
데이터베이스 사용법 (Java)
Client
- 프론트 엔드 (Java 프로그램, 웹, 어플리케이션 등)
Server
- 백 엔드 (Spring Boot, Django, JSP 등)
- 클라이언트의 요청을 받아 처리
- DB에 접근하여 데이터를 관리
=> Server 개발을 배우지 않았으니, 서버 없이 자바에서 바로 DB에 접근 하는 방식의 구조로 진행하면 됨
1. JDBC
- Java DataBase Connectivity의 약어로 Java와 DB 연결을 위한 API
- JDBC만 있으면 어떤 DB든 똑같은 코드로 접근 가능
2. DB 연결 코드 작성
1. JDBC 연결
Class.forName("com.mysql.cj.jdbc.Driver");
2. DB server 연결
- DB가 켜져있는 서버(컴퓨터)의 주소
// "jdbc:mysql://[서버 ip]:[포트 번호]/[DB 이름]?serverTimezone=UTC&autoReconnect=true"
String url = "jdbc:mysql://localhost:3306/WePLi?serverTimezone=UTC&autoReconnect=true";
String user = "DB 계정 id";
String password = "DB 계정 pw";
Connection con = DriverManager.getConnection(URL, user, password);
3. SQL 문 실행
- PreparedStatement, createStatement 같은 인터페이스는 사용자가 SQL 문을 보내고 데이터베이스에서 데이터를 가져올 수있는 메서드를 제공함
// SQL 쿼리문 작성
//(1) PreparedStatement 사용 (권장)
String sql = "select * from member where member_id=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, member_id);
//(2) createStatement 사용
String sql = "select * from member where member_id='"+member_id+"'";
Statement stmt = conn.createStatement(sql);
-----------------------
// SQL 쿼리 실행
stmt.executeQuery(); -> 가져올 데이터가 있는 경우
stmt.executeUpdate(); -> 가져올 데이터가 없는 경우
4. 받아온 데이터 확인
- ResultSet에 저장된 각 행의 모든 열을 순서대로 출력
- DB 테이블에 저장된 테이블의 속성 명으로 데이터를 가져올 수 있음
- 문자열로 저장되어 있으면 rs.getString("속성명");
- 숫자로 저장되어 있으면 rs.getInt("속성명");
ResultSet rs = stmt.executeQuery();
// rs에 저장된 다음 행으로 커서를 옮긴다.
if(rs.next()) {
String id = rs.getString("member_id");
String name = rs.getString("member_name");
String email = rs.getString("member_email");
//int로도 가져올 수 있다.
int number = rs.getInt("number")
}
5. DB 연결 종료
- 데이터를 가져온 후에는 DB 연결을 종료 해줘야한다.
- 연결 해제 안하면 DB에 계속 연결이 쌓여서 DB에 부하 발생
rs.close(); // ResultSet rs
stmt.close(); // PreparedStatement stmt
conn.close(); // Connection conn