DB-JDBC

Shaun·2022년 8월 24일
1

DB

목록 보기
1/5
post-thumbnail

DB공부를 다시 하게됐다.

프로젝트 할떄마다 DB하나파고 그 DB에 해당하는 URL,id,passoword 를 넣고 데이터를 넣다 뺐다 하는게 내가 아는 전부인것 같은 느낌이였다.

콘솔창이 올라갈때마다 모르는 DB정보도 많았고 이사님께서 DB기초공부를 다시 하라고 하셔서 DB를 처음 배울때부터 JDBC 부터 다시하게 됐다.

JDBC

JDBC는 지금 실무에서는 직접적으로 쓰지는 않지만 지금 사용하고 있는 DB의 기초가 되는 뿌리같은 존재이다. 예전 DB를 처음 배울때 JDBC를 잠깐 배우고 넘어간적이 있지만 그것이 전부이다. 이번기회에 한번 더 확인 해보자

JDBC는 무엇이며 왜 존재하는가?

  • JDBC 란 간단히 말해 DataBase의 공통 사용법(?) 이라고 말하고 싶다.

  1. 커넥션연결 : TCP/IP 연결
  2. SQL전달 : 쿼리문 수행
  3. 결과 응답 : 그 결과 응답
  • JDBC가 나오기 이전에 각각의 DB들은 그들만의 방법의로 이 과정들을 수행한다.

JDBC 이전의 문제점

  • 이로 인한 가장 큰 문제점은 데이터 베이스 종류를 다른 종류의 데이터베이스로 변경하면 그에 해당하는 코드들도 다 변경해줘야한다.
  • 즉 1,2,3번의 코드들을 다 변경해야 한다는 문제점이 생긴다. 늘 변경에는 유연하면서 코드 수정은 최소화로 해야한다.

JDBC의 등장

  • JDBC는 표준 인터페이스며 각각 구현한 드라이버들이 존재 한다.

  • 원하는 DB의 드라이버를 가져다가 사용만 하면된다.

=> 애플리케이션 로직은 JDBC 표준 인터페이스에만 의존함으로 다른종류의 데이터베이스로 변경을해도 드라이버만 바꿔주면 나머지 코드변경없이 사용할수 있다.

=> 하지만 각각의 데이터베이스마다 SQL,데이터타타입 등의 일부 사용법은 다르다. 그래서 결국 데이터베이스를 변경하면 JDBC코드는 변경하지 않아도 괜찮지만 SQL은 해당 데이터베이스에 맞도록 변경 해야한다.

JDBC와 최신 데이터 접근 기술

  1. SQL Mapper
  • 개발자가 SQL을 직접 구현해야한다는 단점이 있지만 그외에것들은 다 알아서 해준다.(ex:MyBatis)

2.ORM

  • 개발자가 SQL문까지 직접 구현할필요 없지만 기술의 난이도가 높다. (ORM에 대한 글은 블로그에 이미 포스팅했으므로 자세한 설명은 생략)

=> JDBC를 개발자가 직접 다룰 필요가 없어진다.

JDBC 활용

  • 순수 JDBC만을 이용해 디비 연결을 해보자(H2 세팅은 생략)

  • 필요 정보들을 입력해주면 DriverManager가 DB에 해당하는 Driver을 찾아준다. 여기서는 h2 Driver을 찾아주었다.

  • 연결 할때마다 각각 커넥션을 얻는다.

DriverManager

  • 각각의 Driver들에게 DriverManager이 데이터를 넘겨준다(URL,USERNAME,PASSWORD)

  • 이 데이터를 처리할수 있는 Driver가 반환된다.

JDCB-crud

Create

Read

Update

Delete

  • JDBC 코드에 대한 자세한 설명은 생략한다. 주의해야 할점은 DriverManager.getConnection() 으로 외부와 통신(TCP/IP) 할경우 꼭 리소스를 닫아줘야한다는점.

  • 리소스 닫는 와중에도 exception 이 발생하면 나머지가 닫히지 않기 때문에 try-catch 처리해줘야함

  • 문자열에 쿼리문을 작성해 직접 넣어 sql injection 공격이 올수 있으므로 꼭 바인딩 방식으로 해줘야 한다. (PreparedStatement 사용 이유)

JDBC-crud-TestCode

profile
호주쉐프에서 개발자까지..

0개의 댓글