JPA

suhan cho·2022년 6월 27일
0

JPA

  • 데이터를 저장하거나 조회하거나 수정하는 등의 기능을 구현해야 한다.

  • 웹 서비슨느 데이터를 처리할 때 대부분 데이터베이스를 사용

  • 데이터베이스를 사용하려면 SQL쿼리문을 작성하고 실행해야한다.

  • ORM(Object relational mapping)을 이용하면 자바 문법만으로 db다룰 수 있다.

  • ORM을 사용하면 쿼리를 직접 작성하지 않아도 db의 데이터를 처리할 수 있다.

ORM vs SQL쿼리

  • question 테이블

SQL

insert into question (subject, content) values ("안녕하세요, 가입 인사드립니다 ^^");

ORM

Question q1 = new Question();
q1.setSubject("안녕하세요");
q1.setContent("가입 인사드립니다 ^^");
this.questionRepository.save(q1);

Question q2 = new Question();
q2.setSubject("질문 있습니다");
q2.setContent("ORM이 궁금합니다");
this.questionRepository.save(q2);
  • 코드에서 Question은 자바 클래스, 이처럼 데이터를 관리하는데 사용하는 ORM클래스를 엔티티(Entity)라고 한다.
  • ORM을 사용하면 내부에서 SQL쿼리를 자동으로 생성해준다.
  • db 종류에 상관없이 일관된 코드를 유지할 수 있어 유지 보수가 좋다.
  • 내부에서 쿼리를 생성해주기에 개발자가 달라도 통일된 쿼리를 작성하여 오류 줄임

JPA란?

  • JPA는 자바 진영에서 ORM의 기술 표준으로 사용하는 인터페이스 모음
  • JPA는 인터페이스이다. 따라서 인터페이스를 구현하는 실제 클래스가 필요
  • implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 그레들에 추가해야한다.
  • properties에 추가
# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

H2데이터베이스

  • build.gradle에 runtimeonly로 작성

  • runtimOnly란 해당 라이브러리가 런타임시에만 필요한 경우에 사용

  • 컴파일시에만 필요한 경우에는 compileOnly사용

    • spring.h2.console.enabled - H2 콘솔의 접속을 허용할지의 여부 true
    • spring.h2.console.path - 콘솔 접속을 위한 URL 경로이다.
    • spring.datasource.url - 데이터베이스 접속을 위한 경로이다.
    • spring.datasource.driverClassName - 데이터베이스 접속시 사용하는 드라이버이다.
    • spring.datasource.username - 데이터베이스의 사용자명이다. (사용자명은 기본 값인 sa로 설정한다.)
    • spring.datasource.password - 데이터베이스의 패스워드이다. 로컬 개발 용도로만 사용하기 때문에 패스워드를 설정하지 않았다.
profile
안녕하세요

0개의 댓글