Spring/Spring Data JPA

[Spring Data JPA] 1. 관계형 데이터베이스와 자바

미스터로즈 2021. 8. 4. 09:15

백기선님 강의 중 Spring Data JPA에 대해서 정리를 해놓은 블로그입니다.

자세한 내용은 강의를 참고해주세요.

강의 링크


JDBC

  • - (관계형) 데이터베이스와 자바의 연결 고리
  • - 자바에서 JDBC를 통해서 데이터 베이스에 CRUD 작업을 진행합니다. 이는 데이터를 영속화 해야할 필요가 있기 때문입니다.

※ 애플리케이션을 껏다 켜도, 데이터가 유지되는 속성이 영속성입니다. 

 

JDBC

  • DataSource / DriverManager
  • Connection
  • PreparedStatement

 

SQL

  • DDL
  • DML

 

무엇이 문제인가?

  • SQL을 실행하는 비용이 비싸다.
  • SQL이 데이터베이스 마다 다르다.
  • 스키마를 바꿨더니 코드가 너무 많이 바뀌네
  • 반복적인 코드가 너무 많아.
  • 당장은 필요가 없는데 언제 쓸 줄 모르니까 미리 다 읽어와야 하는지 모릅니다.

 

의존성 추가

 


실습

 

의존성 추가

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

 

docker를 이용해서 PostgreSql 설치

 

docker를 이용해서 PostgreSql 실행

docker exec -i -t postgres_boot bash

 

su - postgres

 

아래와 같이 접근을 하면 오류가 났습니다.

psql springdata

따라서 아래와 같이 username와 db 이름으로 입력을 해줘야 정상 실행이 가능합니다.

psql --username [유저이름] --dbname [db이름]

 

- DB 사용 예제 1

try(Connection connection = DriverManager.getConnection(url,username,password)){
            System.out.println("Connection created: "+connection);
            String sql = "CREATE TABLE ACCOUNT (id int,username varchar(255),password varchar(255))";
            try(PreparedStatement statement = connection.prepareStatement(sql)){
                statement.execute();
            }
        }

 

- DB 사용 예제 2

try(Connection connection = DriverManager.getConnection(url,username,password)){
            System.out.println("Connection created: "+connection);
            String sql = "INSERT INTO ACCOUNT VALUES(1,'hyeon','pass')";
            try(PreparedStatement statement = connection.prepareStatement(sql)){
                statement.execute();
            }
        }