▣ 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 | ~로 끝나는 |
- 활용 예시


자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인
Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들
www.inflearn.com
'BE Study' 카테고리의 다른 글
[BE Study] Day 8 -트랜잭션 (0) | 2024.02.29 |
---|---|
[BE Study] Day5,6 Controller 분리하기/ Spring Container, Bean (1) | 2024.02.26 |
[BE Study] Day 3 - 익명 클래스/ 람다/ 스트림 API (0) | 2024.02.23 |
[BE Study] Day2 - POST API/ LocalDate, LocalTime (0) | 2024.02.21 |
[BE Study] Day 1 - HTTP 요청/ Server/ 어노테이션(@) (0) | 2024.02.19 |