BE Study

[BE Study] Day 7 - JPA 사용하기

고고잉93 2024. 2. 27. 16:07
728x90

▣ SQL을 직접 작성한다면?

1. 오류 발생에 대하여 컴파일 시점에 발견되지 않고, 런타임 시점에 발견된다.

2. 특정 데이터베이스에 종속적이게 된다. (MySQL → MsSQL 변경시 다 코드를 바꿔주어야 한다.)

3. 반복작업이 많아진다. 테이블 하나 만들때마다 쿼리가 항상 필요하다.

4. 데이터베이스의 테이블 vs 객체 둘간의 패러다임이 다르다.

 

▣ JPA란?

□ JPA(Java Persistence API)

  ○ Persistence - 영속성: 서버가 재시작되어도 데이터는 영구적으로 저장되는 속성

  ○ API: 정해진 규칙

 → 데이터를 영구적으로 보관하기 위해 Java진영에서 정해진 규칙

 

□ 자바진영의 ORM(object-Realtional Mapping)

  ○ Object: 객체

  ○ Realtional: 관계형 DB

  ○ Mapping: 객체와 테이블을 짝짓는다.(연결시킨다)

 

∴ 객체와 관계형 DB의 테이블을 짝지어 데이터를 영구적으로 저장 할 수 있도록 정해진 Java진영의 규칙

                                                                                     ▲ 구현(implement)

HIBERNATE

(구현체)

❗ HIBERNATE가 JPA를 구현하고 있다.

 

 

■ JPA어노테이션

 ● @Entity: 스프링이 User객체와 user테이블을 같은 것으로 바라본다.

 

 ● @Id: 이 필드를 primary key로 간주한다.

 

 ● @GeneratedValue: primary key는 자동 생성되는 값이다.   

 

 ● @Column: 객체의 필드와 Table의 필드를 매핑한다.(null가능 여부, 길이 제한 등 설정, 생략 가능)

 

■ Spring Data JPA

    : 복잡한 JPA코드를 스프링과 함께 사용자가 사용하기 쉽게 한번 더 감싸준 라이브러리

   

  ● By 앞에 들어갈 수 있는 구절 정리

findBy~ 1건을 가져온다. Optional 가 될 수도 있다.
findAllBy~ 쿼리 결과물이 N개인 경우 사용. List반환
existsBy~ 쿼리 결과가 존재하는지 확인. 반환타입은 boolean
countBy~ SQL의 결과 개수를 센다. 반환 타입은 Long

 

  ● By 뒤에 들어갈 수 있는 구절 정리

~ByGreaterThan 초과
~ByGreaterThanEqual 이상
~ByLessThan 미만
~ByLessThanEqual 이하
~ByBetween 사이에
~ByStartsWith ~로 시작하는
~ByEndsWith ~로 끝나는

 

더보기

   - 활용 예시

강의: https://inf.run/Hywa

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들

www.inflearn.com

 

728x90