반응형
💋 오늘 공부한 내용
- Spring JDBC 강의에서 JDBC를 직접 사용해서 개발하는 부분을 실습했다. 레벨1 마지막에 하던 내용인 것 같은데 이제서야 공부중 ㅎㅎㅎㅎ 근데 이제서야 많은게 이해되기 시작했다.
- DataSource에 대해서 드디어 알게 되었다...!
- 먼저 커넥션에 대해서 이해할 필요가 있다.
- 데이터베이스에 커넥션을 얻는다는 건 뭘까..?
- 애플리케이션 서버에서 데이터베이스 서버로 "연결 되었니?" "되었어" "오예" 같은 세번 악수하고(3 way handshake), 연결이 확인되면 id, pw 부가정보를 전달하고 데이터베이스에 접근할 수 있는지 인증 인가를 한 후에, 커넥션을 완료해서 Connection 객체를 애플리케이션 로직으로 반환한다. 헥헥
- 커넥션을 얻는 방법에는 크게 두 가지가 있다.
- 내가 직접 커넥션 얻기: DriverManager를 통해서 쉽게 얻을 수 있다.
- 현실적으로 사용자 요청이 들어왔을 때, 그제서야 위에서 설명한 데이터베이스에 커넥션을 얻는 절차를 거칠 수는 없다. 사용자 대기 시간이 너무 길어져 사용자 경험이 악화될 수 있다.
- 또한 사용자 경험과 별개로, 매 사용자 요청에 대해 커넥션을 만들게 되면, 서비스가 커졌을 때 데이터베이스 서버에 커넥션이 무한대로 연결될 수 있는데 이 경우 서버가 버티지 못하게 될 수 있기 때문에 커넥션의 양을 조절하는 것이 필요하다.
- 커넥션 풀에서 커넥션 얻기: 위의 커넥션을 얻어놓는 과정을 미리 해서 풀(Pool)에 저장해두는 것이다.
- 커넥션 객체를 수영장에 넣어놓는다고 생각하면 될 것 같다.
- List에 Connection 객체를 담아서 사용하는 것과 비슷하겠지만, 나보다 훨씬 잘 만들어놓은 오픈소스 커넥션 풀이 있다. 대표적으로는 Hikari! 여러 가지가 존재했지만, 현재는 대부분 히카리를 사용하게 되었다.
- 사용자 요청이 들어왔을 때, DB에 접근할 수 있는 Connection 객체를 커넥션 풀에서 가져다 쓰고 요청에 대한 처리가 완료되었을 때 풀로 반환한다. 이때 close()가 호출되더라도 히카리에서 커넥션 객체를 프록시 객체로 감싸고 있기 때문에 실제로 커넥션이 끊기지는 않고, 다시 풀로 반환하게 된다.
- DataSource는 위에서 설명한 모든 커넥션 객체를 얻는 방법을 추상화한 것이다.
- 주요 기능은 딱 하나다. getConnection()
- 직접 DriverManager를 통해서 커넥션을 받았던, 커넥션 풀을 통해서 커넥션을 받았던 상관 없이 커넥션을 얻는 방법을 추상화했기 때문에 코드 변경 없이 커넥션 없는 방법을 변경할 수 있다.
- 참고로 DriverManager를 통해 얻는 방법은 DriverManagerDataSource로 구현되어 있다.
- 내가 직접 커넥션 얻기: DriverManager를 통해서 쉽게 얻을 수 있다.
- 트랜잭션 관련해서도 진짜 레벨인터뷰때 물어보면 등땀 살짝 날 정도로 몰랐는데, 오늘 하루 강의를 짱많이 들었다.
- 실습하면서 들었는데, 아까 리내랑 만나서 들은게 아래만큼이라 자랑을 좀 해보려고 함
💋 감정 회고
- 리내랑 오늘은 논현 쪽에서 만나서 공부함! 여기 맛집도 많고 카페도 아주 맘에 드는 공부 플레이스를 찾아서 매우 기쁨! ><
- Spring JDBC 강의를 듣고 있는데, Database에 대한 전반적인 이해 없이 용케도 레벨2까지 잘 해냈다는 생각이 듦ㅋㅋㅋ 아 오늘 강의를 레벨인터뷰에서 헙크가 물어보기 전에 봤어야 했음 ㅡㅡ!
- JPA 공부를 나중에 필요하다면 해야겠지만 일단 먼저 나중에 죽어도 안쳐다볼 low level의 JDBC와 SQL Mapper를 지금이라도 좀 하고 싶음. 중요하지만 급하지 않은 느낌이랄까?!?!!
💋 오늘의 포스팅
https://engineerinsight.tistory.com/116
[Spring/DB] JDBC, SQL Mapper(JdbcTemplate, MyBatis), ORM(JPA - Hybernate): 차이점과 등장 배경, 장단점에 대하여
💋 JDBC JDBC(Java Database Connectivity) JDBC는 데이터베이스에 접근하는 기능의 표준화로 개발자들이 데이터베이스를 종류별로 공부해야 하고, 데이터베이스 종류에 따라서 비즈니스 코드를 수정해야
engineerinsight.tistory.com
반응형
'TIL > 2023' 카테고리의 다른 글
[TIL] 23.06.21 (2) | 2023.06.21 |
---|---|
[TIL] 23.06.20 (0) | 2023.06.20 |
[TIL] 23.06.14 (0) | 2023.06.14 |
[TIL] 23.05.26 (1) | 2023.05.26 |
[TIL] 23.05.25 (0) | 2023.05.25 |