728x90
- java.sql.Connection
- Connection 인터페이스는 데이터베이스와 네트워크 상의 연결을 의미함
- 실제 구현 클래스는 JDBC 드라이버 파일 내부의 클래스
- Connection은 반드시 close() 해야 함: 연결이 종료되지 않으면 새로운 연결을 받을 수 없음
- try ~ catch ~ finally를 이용해서 종료하거나 try-with-resource 방식(자동으로 close()가 호출됨)을 이용함
- java.sql.Statement/PreparedStatement
- JDBC에서 SQL을 데이터베이스로 보내기 위해 Statement/PrepareStatement 타입을 이용함
- Statement
: SQL문 내부에 모든 데이터를 같이 전송 - PreparedStatement
: SQL문을 미리 전달하고 나중에 데이터를 전송
실제 개발에서는 PreparedStatement 만 이용(SQL injection 공격 방지) - 중요 기능
- setXXX()
: setInt(), setString(), setDate()와 같이 다양한 타입에 맞게 데이터를 세팅할 수 있음 - executeUpdate()
: DML을 실행하고 결과를 int 타입으로 반환함.
결과는 몇 개의 행이 영향을 받았는가. 예를 들면 1개의 데이터가 insert 되었는지와 같은 결과를 알 수 있음 - executeQuery()
: 쿼리를 실행할 때 사용함
ResultSet이라는 리턴 타입을 이용함 - close()
: 종료. 종료해주어야만 데이터베이스 내부에서도 메모리와 같이 사용했던 자원들이 즉각적으로 정리됨
- setXXX()
- java.sql.ResultSet
- DML의 경우에는 int로 반환되는 것과 달리 쿼리를 실행했을 때 데이터베이스에서 반환하는 데이터를 읽어 들이기 위해서 ResultSet 인터페이스를 이용함
- 자바 코드에서 데이터를 읽어 들이므로 getInt(), getString() 등의 메소드를 이용해서 필요한 타입으로 데이터를 읽어들임
- next()
: ResultSet은 데이터를 순차적으로 읽는 방식으로 구성되기 때문에 next()를 이용해 다음 행의 데이터를 읽을 수 있도록 이동하는 작업이 필요함
- Connection Pool과 DataSource
- Connection Pool(커넥션 풀)을 이용해서 데이터베이스와의 연결을 맺을 때 성능이 저하되는 것을 막음
- javax.sql.DataSource 인터페이스는 Connection Pool을 자바에서 API 형태로 지원하는 것.
Connection Pool을 이용하는 라이브러리들은 모두 DataSource 인터페이스를 구현하고 있으므로 이를 활용해서 JDBC 코드를 작성하게 됨
- DAO(Data Access Object)
- 데이터를 전문적으로 처리하는 객체
- VO(Value Object) 혹은 엔티티(Entity)
- Entity
: 하나의 데이터 - VO
: Entity를 처리하기 위해서 테이블과 유사한 구조의 클래스를 만들어서 객체로 처리. 이때 만든 객체는 값을 보관하는 용도. 데이터 그 자체- DTO가 각 계층을 오고 가는데 사용되는 택배 상자라면
VO는 데이터베이스의 엔티티를 자바 객체로 표현한 것 - DTO는 getter/setter를 이용해 자유롭게 데이터를 가공함
VO는 getter만을 이용함
- DTO가 각 계층을 오고 가는데 사용되는 택배 상자라면
- Entity
728x90
'Web > Spring' 카테고리의 다른 글
Model vs ModelAndView vs ModelMap (+ @ModelAttribute) (0) | 2024.11.11 |
---|---|
[Spring] Spring MVC란? (1) | 2024.05.03 |
[Spring] 컴포넌트 스캔 Component Scan (0) | 2024.04.17 |
[Spring] DI 자동주입 (0) | 2024.04.14 |
[Spring] 의존성 주입과 제어 역행 (4) | 2024.04.10 |