스프링 11

[Spring Boot] 동적 쿼리 처리를 위해 Querydsl 알아보기

Querydsl ? - JPA의 쿼리 메서드의 기능과 @Query를 통해 많은 기능을 구현 할 수는 있지만, 선언할 때 고정된 형태의 값을 가지는 단점이 있다. 이러한 경우엔 동적으로 쿼리를 생성하여 처리할 수 있는 Querydsl을 사용한다. - Querydsl은 작성된 엔티티 클래스는 그대로 이용하는 것이 아닌 'Q도메인'이란 것을 이용해야 하고, 이 과정에서 추가적인 설정이 필요하다. querydsl을 위한 설정 추가 (본인은 스프링부트 2.7.7 기준으로 작성) - build.gradle 파일에 다음과 같은 내용을 처리하자. 1. plugins 항목에 querydsl 관련 부분을 추가 2. dependencies 항목에 필요한 라이브러리 추가 3. Gradle에서 사용할 추가적인 항목 추가 bui..

스프링 2023.02.13

[Spring Boot] Thymeleaf를 활용해보자(2)

Thymeleaf에서의 링크처리 Thymeleaf의 링크는 '@{}'를 이용한다. @GetMapping({"/ex2", "/exLink"}) public void exModel(Model model) { List list = IntStream.rangeClosed(1,20).asLongStream(). mapToObj(i->{ SampleDTO dto = SampleDTO.builder() .sno(i) .first("First.."+i) .last("Last.."+i) .regTime(LocalDateTime.now()) .build(); return dto; }).collect(Collectors.toList()); model.addAttribute("list", list); } Colored by ..

스프링 2023.01.12

[Spring Boot] Thymeleaf를 활용해보자(1)

Thymeleaf '템플릿 엔진'의 일종으로 HTML에 속성을 추가해 페이지에 값을 추가하거나 처리 할 수 있다. Thymeleaf를 사용하는 이유? 1. JSP와 유사하게 ${}을 별도의 처리 없이 이용할 수 있다. 2. Model에 담긴 객체를 화면에서 Javascript로 처리하기 편하다. 3. 연산이나 포맷 기능을 추가적인 개발 없이 지원한다. 기본적인 사용방법 기존의 속성 앞에 'th:'를 붙여주고 값을 지정해준다. JSP와 달리 별도의 태그를 이용하지 않아도 되며 Thymeleaf는 HTML은 그대로 두고 값을 추가하는 방식이다. Title Colored by Color Scripter cs 일반적으로 JSP에서 foreach문으로 리스트를 돌리는 것과 다르게 li 태그 내에 th:each라는..

스프링 2023.01.12

[Spring] @Query 어노테이션에 대해 알아보자

@Query 어노테이션 Spring Data JPA가 제공하는 쿼리 메소드는 간단한 검색 기능의 경우는 편리하게 사용 할 수 있지만 조인이나 복잡한 조건을 처리해야 하는 경우엔 불편할 때가 많다. @Query의 경우 메서드의 이름과 상관없이 메서드에 추가한 어노테이션을 통해 처리가 가능하다. @Query의 value는 JPQL(Java Persistence Query Language)로 작성하는데 흔히 '객체지향 쿼리'라 불리는 구문들이다. @Query로 할 수 있는 작업들 - 필요한 데이터만 선별적으로 추출하는 기능이 가능 - 데이터베이스에 맞는 순수한 SQL을 사용하는 기능 - insert, update, delete와 같은 select가 아닌 DML을 처리하는 기능(@Modifying과 함께 사용)..

스프링 2023.01.09

[Spring] 쿼리 메서드(Query Methods)에 대해 알아보자

쿼리 메서드? 말 그대로 '메서드의 이름 자체가 쿼리문'이 되는 기능이다. 쿼리 메서드는 주로 'findBy 나 getBy..'로 시작하고 이 후 And, Or와 같은 키워드를 이용한다. 사용하는 키워드에 따라서 파라미터의 개수가 결정된다. 예를 들어, Spring Data JPA 문서를 보면 findByStartDateBetween은 ...where x.startDate between ?1 and ?2 라고 설명되어 있듯 해당 키워드는 2개의 변수가 필요하다는걸 알 수 있다. 리턴 타입도 select를 하는 작업은 List나 배열을 이용 할 수 있고, 파라미터에 Pageable이 들어간는 경우엔 무조건 Page로 이용해야 한다. 테스트 코드를 통해 알아보자. Repository 인터페이스에 추가 pub..

스프링 2023.01.09

[Spring] Pageable 인터페이스 사용해보기

Spring Data JPA에서 페이징 처리와 정렬은 findAll()이라는 메서드를 이용한다. findAll()은 JpaRepository 인터페이스의 상위인 PagingAndSortRepository의 메서드로 파라미터로 전달되는 'Pageable'이란 타입의 객체에 의해 실행되는 쿼리를 결정한다. Pageable 인터페이스? 페이지 처리를 위해 가장 중요한 건 org.springframework.data.domain.Pageable 인터페이스이다. Pageable은 페이지 처리에 필요한 정보는 전달하는 용도의 인터페이스 타입으로, 실제 객체를 생성할 때는 구현체인 org.springframework.data.domain.PageRequest라는 클래스를 사용한다. PageRequest? 이 클래스의..

스프링 2023.01.08

[Spring] JpaRepository 사용법

Spring Data JPa는 Hibernate를 이용하기 위한 여러 API를 제공하고 JpaRepository는 그 중 하나인 인터페이스이다. 사용법은 아주 간단하다. 이를 상속하는 인터페이스를 만들어주면 모든 처리가 끝나게 된다. Repository 생성 1 2 3 4 5 6 7 package com.study.zumsim.repository; import com.study.zumsim.entity.Memo; import org.springframework.data.jpa.repository.JpaRepository; public interface MemoRepository extends JpaRepository { } Colored by Color Scripter cs 정의한 내용을 사용 1 2 3..

스프링 2023.01.08

엔티티 클래스(Entity Class)

JPA를 공부하며 접하게 되는 엔티티 클래스는 데이터베이스 테이블에 대응하는 클래스로 테이블과 같은 구조로 작성합니다. @Entity 엔티티 클래스는 Spring Data JPA에서는 반드시 @Entity라는 어노테이션을 추가해야만 한다. 해당 클래스가 엔티티를 위한 클래스이며, 해당 클래스의 인스턴스들이 JPA로 관리되는 객체라는 것을 의미한다. 또한, 이 어노테이션이 붙은 클래스는 옵션에 따라 자동으로 테이블을 생성하고 멤버 변수에 따라 자동으로 컬럼을 생성하기도 한다. @Table @Entity와 같이 사용 할 수 있는 어노테이션으로 데이터베이스상에서 엔티티 클래스를 어떤 테이블로 생성 할 것인지에 대한 정보를 담기 위한 용도로 쓴다. 예로 @Table(name='user_table')로 작성시 u..

스프링 2023.01.08

[Spring JPA] ORM, Spring JPA 그리고 Hibernate

JPA를 공부하기에 앞서 ORM에 대해 알아야 한다. ORM이란? Object Relational Mapping의 약자로 단어에서 보듯 객체지향과 관련이 있다. 객체지향을 자동으로 관계형 데이터베이스에 맞게 처리해주는 기법이라고 생각하면 이해가 편할 것 같다. ORM은 '객체지향'의 구조가 '관계형 데이터베이스'와 유사하다는 점에서 시작했다. 책을 읽으며 이해한대로 정리해보았다. 객체지향 관계형 데이터 베이스 비고 클래스 Table 인스턴스 Row(레코드 혹은 튜플) 객체가 데이터+메서드라는 의미라면 Row는 데이터만을 의미 참조 관계 JPA란? JPA는 Java Persistence API의 약자로 ORM을 Java 언어에 맞게 사용하는 '스펙'이다. ORM이 좀 더 상위 개념이 되고, JPA는 Jav..

스프링 2023.01.08

RedirectAttributes

Redirect가 발생하면 원래 요청은 끊어지고, 새로운 HTTP GET 요청이 시작된다 = Redirect 실행 이전에 수행된 모델 데이터는 소멸한다. 하지만 Redirect 방법으로도 데이터를 전달하는 방법이 있다. Redirect는 GET 메소드 방식이라 파라미터가 URL에 노출되는 단점이 있어 스프링에서 RedirectAttributes 클래스를 제공한다. 해당 클래스 사용시 URL 뒤에 파라미터가 붙지 않아 POST 방식으로 전달하는 거 같지만 POST 방식은 아니다. RedirectAttributes는 Redirect가 발생하기 전에 모든 플래시 속성은 세션에 복사하고 그 이후엔 저장된 플래시 속성을 세션에서 모델로 이동시킨다. addAttribute로 전달한 값은 url뒤에 붙으며 리프레시해..

스프링 2021.05.06
728x90
반응형