👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
CRUD란 무엇인가
학원 초반 데이터베이스 할때 선생님이 강조했던 단어 중 한 가지가 CRUD였다.
CRUD는 데이터베이스와 관련된 주요 작업을 나타내는 약어라고 설명해 주셨다
C : Create
╰┈➤ 데이터를 생성하거나 새로운 레코드를 데이터베이스에 추가
R : Read
╰┈➤ 데이터를 조회하거나 읽어 온은 것, 데이터 베이스에서 정보를 검색하는 작업
U : Update
╰┈➤ 데이터를 업데이트하거나 수정, 기존의 데이터를 변경하거나 업데이트하는 작업
D : Delete
╰┈➤ 데이터를 삭제, 레코드를 제거하는 작업
이러한 CRUD작업은 대부분 응용프로그램에서 데이터를 관리하고 조직하는 데 사용되며
웹 애플리케이션, 모바일, 데이크톱 애플리케이션과 같이 데이터베이스를 사용하는 소프트웨어에서 매우 일반적으로 사용되는 용어
IntelliJd에 DB 연결하기 전 환경
My Preference
╰┈➤ Java : Temurin-8 version 1.8.0
╰┈➤ IDE : Intelli J
╰┈➤ Database : Oracle-xe-11g
╰┈➤ docker : 24.0.6
╰┈➤ docker Image : jaspeen/oracle-xe-11g
╰┈➤ Database Tool : DBeaver
학원에선 이클립스에 연결하는 것을 알려주었지만 이클립스 툴 보단 나는 인텔리제이가 더 편했다.
그래서 구글링을 하여 DB에 연결하는 것을 찾아서 진행하였다.
JDBC 연결
DB에 연결하기 위해서 필요한 게 있다
1. JDBC Driver
JDBC는 Java에서 Database를 사용할 수 있게 해주는 API로 JDBC : Java DataBase Connectivity의 약자이다
이 드라이버를 사용하기 위해서는 JDBC 드라이버 설치를 해야 하는데 , 각 DB에 맞는 것을 찾아 설치하면 된다
JDBC Driver는 DB와 통신을 담당하는 자바 클래스
DB 종류에 맞는 드라이버를 사용하면 된다. (보통. jar 파일)
Class.forName(DB에 맞는 Driver)를 사용해 로딩한다.
대표적으로 다음과 같다
- MySQL : com.mysql.cj.jdbc.Driver
- Oracle : oracle.jdbc.driver.OracleDriver
- MSSQL : com.microsoft.sqlserver.jdbc.SQLSeverDriver
JDBC 순서
╰┈➤ DB Driver를 Java 메모리 상으로 로드한다
╰┈➤ Driver를 통해 Java와 DB를 연결한다
✔ 연결할 때 필요한 것 : URL, ID , PASSWORD
이런 창이 뜨는데 현재 PC에 있는 오라클을 사용할 것이라 @localhost로 그대로 해두고
User와 Password를 입력해 준다 (DBeaver에서 사용하는 id, pw)
그리고 URL주소를 복사해 둔다
Test Connection을 눌러서 연결이 잘 되었는지 테스트해 본다
이렇게 된다면 잘 연결된 것이다. Apply를 누르면 끝!
하단에 ojdbc6 이 추가된 게 보인다! 그럼 연동이 잘 된 것!
DB를 이용하기 위한 선언
수업에선 CRUD를 위한 자원을 따로 클래스를 만들어서 모아놨다
클래스명에 DTO : Database Transfer Objects , DAO : Database Access Objects로 정했다
드라이버는 1번만 로드해 주면 되기 때문에 생성자에 작성하였다.
커넥션 성공과 실패여부를 알기 위해 별도의 메서드로 처리하였다
커넥션이 연결되면
멤버변수로 선언한 PreparedStatement psmt로 쿼리문을 전송한다
쿼리 작성은 String으로 선언 후 변수에 입력한다
String sql = " SELECT * FROM 테이블명";
작성한 쿼리문 전송은 psmt.executeQuery를 이용하여 전송한다
쿼리문에서 Select 되면 rs (ResultSet)에 전송받는다
자원을 쓰게 되면 항상 반납을 해줘야 한다
자원을 반납하지 않을 경우 idle time이 발생된다! 중요!
✅ idle time 이란?
╰┈➤ 데이터베이스 시스템이 쿼리를 실행하거나 업데이트를 수행하는 동안 사용자와 상호작용이 없는 시간을 뜻하는데 이때 데이터베이스 시스템은 대부분의 자원을 사용하지 않으며 대기상태에 있는 걸 뜻하며 성능저하나 리소스낭비가 될 수 있음으로 유의해야 한다
그래서 나는 자원반납 메서드를 따로 정의해서
사용 후 항상 finally에 반납을 선언해 주었다
내일은 실습과제로!
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/11/08 🫶 새로운 미니 프로젝트의 시작 (0) | 2023.11.13 |
---|---|
2023/11/07 ✨ CRUD를 위한 게시판만들기 실습 (0) | 2023.11.07 |
2023/11/03 🐰 개인 프로젝트/자유주제 (1) | 2023.11.04 |
2023/11/02 📝 예외처리 , I/O 입출력 (1) | 2023.11.02 |
2023/11/01 💛 HashMap (1) | 2023.11.01 |