[JPA] 기본적인 JDBC 사용법

Junseo Kim·2020년 3월 21일
4

JDBC

자바와 데이터베이스는 서로 독립적이다.
JDBC를 통해 자바로 데이터베이스에 접속하는 것이다. 즉 JDBC는 자바와 데이터베이스의 다리역할이다.

도커를 사용해 postgresql을 띄워서 사용한다.
도커는 포트를 매핑시켜 로컬에서도 접속할 수 있게 해주는 것이다.

docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=junseo -e POSTGRES_DB=springdata --name postgres_boot -d postgres

참고: https://velog.io/@max9106/Spring-Boot-PostgreSQL

JDBC를 사용해서 postgresql을 사용하기 위해 드라이버 의존성을 추가해줘야한다.(JDBC는 따로 무엇인가를 추가해주지 않아도 자바안에 기본적으로 들어와있다.)

    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.2</version>
        </dependency>
    </dependencies>

JDBC에서 데이터베이스에 접속할 때 필요한 정보가 몇 가지 있다.
1. url(데이터베이스 위치정보)
2. 인증정보(데이터베이스에 접근하기 위한 인증 정보)

Try-with-resources를 사용하면 자원 반납을 자동으로 해준다.
try에 자원 객체를 전달하면, try 블록이 끝나면 자동으로 자원을 종료해주는 기능이다.(자바 7부터 사용가능하다)

SQL

SQL은 두 가지 종류가 있다.
1. DDL(definition을 정의하는 것. 즉 스키마를 만드는 것)
2. DML(데이터를 조작하는 것(추가, 업데이트 등))

간단한 sql문을 PreparedStatment를 통해 실행해볼 수 있다.(마찬가지로 Try-with-resources를 사용하였다.)

sql이 잘 실행된 것을 볼 수 있다.

DML을 사용해서 데이터를 넣을때도 똑같이 해주면 된다.


문제점

  • 도메인에 해당하는 테이블을 생성하는 것이 번거롭다.
  • 테이블에서 꺼낸 데이터를 도메인 객체로 매핑하는 것도 번거롭다.
  • Connection객체를 통해 연결하는 비용이 비싸다
  • DB마다 sql문이 조금씩 다르다.
  • 반복적인 부분이 많다
  • 성능 최적화가 힘들다

위의 문제들을 해결하기 위해 ORM을 사용하는 것이다.

0개의 댓글