[Spring] CH16 스프링부트 레파지토리(저장소) - JDBC

jaegeunsong97·2023년 3월 28일
0

[Fast Campus] Spring

목록 보기
25/44
post-thumbnail

📕 1교시





📕 2교시


자바로 DB에 연결하는 드라이버, 드라이버를 통해서 연결한다.

A,B 통신하려면 OS단 가서 드라이버랑 같이 통신

통신이 내장되어있는 프로토콜

프로토콜에 맞춰서 버퍼로 보내는것이 중요

버퍼 2개 -> Statement, PreparedStatement(V) -> 1개만 사용

드라이버, 커넥션, PreparedStatement, Result Set -> 이것만 알면 된다.!

이것을 제공해주는 라이브러리(JDBC)

기본기하고 하이버네이트 배울 것임. 아직은 몰라도 된다

DB가 있다. 테이블 형태로 3개

connection으로 연결

선은 stream

그리고 버퍼를 달아준다. 그리고 select를 작성한다.

BR로 읽고 if같은 처리를 해야한다(프로토콜)

그리고 결과를 받아서

이게 기본 로직이고, 이것을 해주는 것이 JDBC 이다. 직접? 귀찮아

굳이 만들어봤자, 연봉? 도움 ㄴㄴ

자바는 동시에 접근하려면 스레드가 만들어진다.

어떤 스레드가 DB에 변형(insert)을 주고 다른 DB가 update, delete, insert를 요청하면 lock이 걸리고 변형을 못한다.

왜그럴까? 동시에 접근을 하지못한다.

update, delete, insert (DML) -> 동시접근 불가능

select(DQL) -> 동시접근 가능

ACID -> I(고립성), DB 동시에 변경? -> 반드시 고립 필요
Why? 변경할 것이여서

connection 연결 후, 버리지 않음 -> connection pool

끝나면 회수 -> 재사용이 가능(request pooling과 비슷)

실습 ㄱ




📕 3교시


DB 더미 데이터 추가

모델을 만들때는 DB와 똑같이 만들자

다음과 같이 @ 붙이면, component Scan이 된다. 들어가보면 Spring이 Bean으로 관리할 수 있게 Component가 있다

그리고 JDBC 라이브러리 -> DataSource

DataSource DI

connection과 PreparedStatement

try-catch -> query -> ? 랜더링

? 채우는 것 -> setString

? 추가 하고싶다? -> 추가하면 됨

최종적으로는 flush

만약 오류난다? catch, 그림 이해

오류 로그는 모으자, 센트리 io

여기로 로그가 남는다

마지막에는 connection 반납

이제 findById를 보자

ResultSet -> select여서 결과를 받아야한다.

따라서 excuteCreate X excuteQuery O

이제 result Set이 뭔지 알아보자

전부 조회하는 쿼리

다음과 같이 테이블이 생긴다.

rs -> column에 워치하고 있다.

행이 존재하면 true, 존재 X false

1건만 찾기 떄문에 if로 했다, findAll -> while

true -> mapper

Customer -> projection 하는 중

프로젝션은 자유

이 과정을 Object mapping -> DB(ResultSet)을 자바 Obj로 Mapping하는 것(프로젝션을 통해서)

데이터가 더있는 경우(findAll) -> while

마지막은 없으니까 false

findAll 코드

while -> om.next
resultset -> close

수업 끝

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글