Java Servlet[5]

BaeSeBin·2025년 1월 3일

Java Servlet

목록 보기
5/7

😊JDBC

Java Database Connectivity의 약자로 Java 프로그램과 DB를 네트워크 상에서 연결하여 데이터를 교환하는 프로그램(인터페이스)으로 관련 API는 java.sql 패키지와 javax.sql 패키지를 이용함.

https://velog.io/@goniieee/JDBC%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-DB%EC%99%80-%EC%97%B0%EA%B2%B0%EC%9D%84-%EB%A7%BA%EC%9D%84%EA%B9%8C

🍧JDBC 프로그램 작성 순서

1. 네트워크를 통해 데이터베이스와 연결
2. 데이터베이스에 보낼 SQL을 작성하고 전송하는 단계
3. 데이터베이스가 보낸 결과를 받아서 처리하는 단계
4. 데이터베이스와 연결을 종료하는 단계

🍧java.sql.Connection

SQL을 실행할 수 있는 객체(Statement/Prepared-Statement)를 생성하는 개념 즉, Connection 인터페이스는 데이터베이스와 네트워크 상의 연결을 의미함. 예외 처리 필요함(try~catch~finally vs lombok의 @clean up)

🍧java.sql.Statement/PreparedStatement

JDBC에서는 SQL을 데이터베이스로 보내기 위해서 Statement/PreparedStatement 타입을 이용함.
Statement : SQL문 내부에 모든 데이터를 같이 전송하는 방식
PreparedStatement : SQL문을 미리 전달하고 나중에 데이터를 보내는 방식(SQLi 방지 위해서 실제 개발에서는 주로 사용함)
주요 기능
1. setXXX : setInt(), setString()과 같이 다양한 타입에 맞게 데이터 설정 가능.
2. executeUpdate() : DML을 실행하고 결과를 int 타입으로 반환함. 리턴 값은 몇개의 행이 영향을 받았는지가 나옴
3. executeQuery() : 쿼리를 실행할 때 사용함. 리턴 타입은 ResultSet 타입임.

🍧java.sql.ResultSet

DML을 사용하는 경우가 아닌 Select문을 사용하게 되면 반환 값인 데이터를 읽어들이기 위해 특별하게 ResultSet 인터페이스를 이용함.
주요 메소드
getString(column)	# 열의 값을 문자열로 가져옴.
getInt(column)	# 열의 값을 정수로 가져옴.
next()	# 커서를 다음 행으로 이동하고, 행이 있으면 true 반환.

🍧Connection Pool과 DataSource

JDBC 프로그램은 Java 프로그램과 네트워크로 연결하고 데이터를 주고 받고 다시 close()하는 과정을 거치게 되는데 DB와 Connection을 맺는 과정은 많은 자원을 사용하기 때문에 Connection Pool을 이용해서 이 문제를 해결함.
Connection Pool : 미리 Connection들을 생성해서 보관하고, 필요할 때마다 꺼내서 쓰는 방식
javax.sql.DataSource 인터페이스는 Connection Pool을 자바에서 API 형태로 지원하는 것으로 Connection Pool을 이용하는 라이브러리들은 모두 DataSource 인터페이스를 구현하고 있음. (HikariCP 사용해볼 예정)

🍧DAO(Data Access Objcet)

DAO는 데이터를 전문적으로 처리하는 객체(DB에 접근해서 테이블 조작하는 행동)를 의미함.
VO(Value Object)단위로 처리함.
VO : 자바에서 DB 데이터를 처리하기 위해 테이블과 유사한 구조의 클래스를 만들어 객체로 처리하는 방식임
VO는 주로 읽기 전용이기 때문에 getter만 사용함(private으로 필드 값 선언)

0개의 댓글