1. JPA Query Method 활용
1) 컬럼에 포함된 단어로 검색(단어의 대/소문자 구분 없이)

2) 컬럼에 포함된 단어로 검색(단어의 대/소문자 구분 없이, 정렬 순서는 이름 내림차순)

* SQL을 자동으로 작성해주고 실행해준다는 장점이 있지만, 메서드명이 너무 길어지고 가독성이 떨어진다는 단점도 있다.
3) 대소문자 구분없이 컬럼 2개 중 1개 이상에 키워드가 포함된 데이터 검색

4) 컬럼이 어떤 값을 초과하는 데이터 검색

5) 컬럼이 어떤 값 미만인 데이터 검색

6) 컬럼이 어떤 범위 안에 있는 데이터 검색

* min 보다 크거나 같고, max 보다 작거나 같은 값이 해당된다.
7) 컬럼이 특정 날짜 이전인 데이터 검색

8) 컬럼이 특정 날짜 이후인 데이터 검색

9) 컬럼이 날짜 범위 안에 있는 데이터 검색

10) 특정 컬럼으로 데이터 검색

* Employee 엔터티 필드에 있는 Department 엔터티의 Name 필드로 검색
* JpaRepository인터페이스의 제네릭 타입과 다른 엔터티를 findBy메서드명에 입력하면 자동으로 join을 해준다.



11) 여러개의 엔터티를 사용하는 데이터 검색(1)

* Employee 엔터티 필드에 있는 Department 엔터티 필드에 있는 Location 엔터티의 City필드로 검색
12) 여러개의 엔터티를 사용하는 데이터 검색(2)

* Employee 엔터티 필드에 있는 Department 엔터티 필드에 있는 Location 엔터티 필드에 있는 Country 엔터티의 Id필드로 검색
2. JPQL(Java Persistence Query Language)
1) JPQL이란?
- JPA에서 사용하는 "객체 지향(object-oriented)" 쿼리 문법.
- 테이블 이름과 컬럼 이름을 사용해서 쿼리 문장을 작성하는 것이 아니라, 엔터티 클래스 이름과 엔터티 필드 이름을 사용해서 쿼리를 작성하는 문법.
- alias(별명)을 반드시 사용해야 함.
- 엔터티 이름, 필드 이름들은 대소문자를 구분.
** 주의: SQL과 비슷해보여도 다른 부분이 많이 있으므로 사용할 때 주의해야 함.
2) 예시


... 중략 ...


3) @Param 애너테이션 - 바인딩 파라미터를 생성할 수 있다.

* @Param 애너테이션을 사용해서 생성한 바인딩 바라미터는 ' :파라미터명 ' 형식으로 입력해주면 된다.


4) JPQL에서 Join을 사용하는 SQL 만들기 (1)

* Employee 엔터티에 있는 Department 엔터티의 name 필드를 조건으로 검색하는 메서드.


5) JPQL에서 Join을 사용하는 SQL 만들기 (2)



6) JPQL에서 Join을 사용하는 SQL 만들기 (3)



3. JPA와 JPQL을 사용한 간단한 웹페이지 만들기
1) src/main/java 하위에 service 패키지, web 패키지 생성

2) web 패키지 하위에 HomeController.java 파일 생성

3) templates 하위에 index.html 파일 생성 - 테스트용으로 <h1> 하나만 일단 입력
4) templates 하위에 layout 폴더 생성
5) layout 폴더 하위에 fragments.html 파일 생성


6) index.html 파일 수정

7) service 패키지 하위에 EmployeeService.java 파일 생성

8) web 패키지 하위에 EmployeeController.java 파일 생성

9) templates 하위에 emp 폴더 생성
10) emp 폴더 하위에 list.html 파일 생성

※ 과제
1. 직원 목록, 직원 상세보기
2. 부서 목록, 부서 상세보기
---------------------------------------
JPA : 객체와 테이블을 매핑
엔터티와 테이블을 매핑
필드와 컬럼을 매핑
'Spring Boot' 카테고리의 다른 글
| 250225 Spring Boot 07 - 객체지향 Entity, JPA auditing, 블로그 만들기(2) (0) | 2025.02.25 |
|---|---|
| 250224 Spring Boot 06 - DTO 사용법, 페이징 처리, 블로그 만들기(1) (1) | 2025.02.24 |
| 250220 Spring Boot 04 - Entity 관계 설정, JPA Query Methods (1) | 2025.02.20 |
| 250219 Spring Boot 03 - Optional, 다중성, 단/양방향 연결 (0) | 2025.02.19 |
| 250218 Spring Boot 02 - Thymeleaf 반복문 활용, 쿼리스트링/경로변수 작성, JPA 입문 (0) | 2025.02.18 |