데이터베이스
공용 데이터들의 집합
DBMS(DataBase Management System)
eg) Oracle, MS SQL Server, MySQL(무료), MariaDB(우리가 쓰는 거)

관계형 DBMS - RDB
key와 value들의 관계를 table로 표현
객체 지향 데이터베이스
정보를 객체 형태로 표현
NoSQL, NewSQL DBMS
비정형 데이터 처리
관계형 데이터베이스
Attribute(속성): column(열)에 표현, key
Tuple: row(행)에 표현, value
Domain: 하나의 속성이 가질 수 있는 값의 범위 또는 데이터타입
SQL(Structured Query Language)
관계형 데이터베이스 관리 시스템용 언어
+ 콘솔에서 SQL을 직접 쳐서 관리하면 복잡하고 어려워서 HeidiSQL 같은 프로그램을 이용한다
CRUD
Create: 생성
Read: 조회
Update: 수정
Delete: 삭제
JDBC(Java Database Connetivity)
자바에서 데이터베이스를 연결하고 SQL문을 실행할 수 있도록 제공되는 표준 API
JDBC 드라이버만 교체하면 다양한 종류의 데이터베이스와 통신 가능
1. JDBC 드라이버 로드
String url = "jdbc:mysql://192.168.0.13:3306/java2_3"; //서버주소:포트번호/DB이름
String username = "stdUser";
String password = "wkvmtlf2";
2. 데이터베이스 연결
//try with resource문 - 괄호 안 정리 알아서 해줌
try (Connection conn = DriverManager.getConnection(url, username, password)){
System.out.println("DB연결 성공");
} catch (SQLException e) {
e.printStackTrace();
}
3. SQL문 실행 및 결과처리
//조회하기
String selectSql = "select * from student"; //student table에서 조회하겠다
Statement stmt = conn.createStatement(); //정적 SQL문
ResultSet rs = stmt.executeQuery(selectSql); //조회할 때 사용
while (rs.next()) { //다 조회해야하니 while
//table에 만들어둔 이름이랑 같아야함
int no = rs.getInt("no");
String major = rs.getString("dept");
String stdID = rs.getString("stdID");
String name = rs.getString("name");
String review = rs.getString("review");
System.out.printf("No: %d | 학과: %s | 이름: %s | 리뷰: %s\n", no, major, name, review);
}
//생성하기
String insertSql = "INSERT INTO student (no, dept, stdID, name, review) VALUES (?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(insertSql); //성능과 보안 좋음
pstmt.setInt(1, 0);
pstmt.setString(2, "컴퓨터공학과");
pstmt.setString(3, "2476154");
pstmt.setString(4, "신윤하");
pstmt.setString(5, "신기해요");
pstmt.executeUpdate(); //실행 잊지마
System.out.println("쓰기 성공");
//수정하기
String UpdateSQL = "UPDATE student SET name = ? WHERE stdID = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, newName); //새 이름
pstmt.setString(2, stdID); //수정할 학생의 학번
int rows = pstmt.executeUpdate();
if (rows > 0) {
System.out.println("학생 정보가 수정되었습니다.");
} else {
System.out.println("해당 학번의 학생이 없습니다.");
}
} catch (SQLException e) {
System.err.println("학생 정보 수정 실패: " + e.getMessage());
}
//삭제하기
String deleteSQL = "DELETE FROM student WHERE stdID = ?";
try (PreparedStatement pstmt = conn.prepareStatement(deleteSQL)) {
pstmt.setString(1, stdID); //삭제할 학생 학번
int rows = pstmt.executeUpdate();
if (rows > 0) {
System.out.println("학생 정보가 삭제되었습니다.");
} else {
System.out.println("해당 학번의 학생이 없습니다.");
}
} catch (SQLException e) {
System.err.println("학생 삭제 실패: " + e.getMessage());
}
4. 자원해제
try-with-resources문이 해줌
MVC + DAO + JDBC
| DAO Interface | 사용자가 수행할 수 있는 CRUD 작업 규칙 정의 |
| DAO | JDBC 관련 로직 구현 |
| Service | 비즈니스(사용자 관련기능) 로직 구현 |
| Model (DTO) | 데이터 |
| View | 사용자 입출력 처리 |
| DB 커넥터 | DB 연결만 관리 |
| Controller | 전체 흐름 관리 |
'JAVA' 카테고리의 다른 글
| [마피아] Join Sequence (0) | 2025.11.21 |
|---|---|
| [JAVA] Spring Boot - 1 (0) | 2025.11.18 |
| [JAVA] Network & Socket (0) | 2025.11.04 |
| [JAVA] GUI & Thread - 알낳기 (0) | 2025.10.31 |
| [JAVA] 중간고사 대비 (0) | 2025.10.19 |