2020/10/26 - [Springboot] - [springboot/jpa] jpa crud example 1 이전글에서 엔티티를 만들고 CRUD에 대한 간단한 예제를 만들었습니다. 이번시간에는 개선할 점으로 엔티티를 파라미터로 받는 부분을 수정해보도록 하겠습니다.Entity는 DB테이블에대한 설계이브로 변경이 자주될수 있는 파라미터 클래스로 사용하지 않도록 합니다. MemberDto 클래스를 생성합니다. MemberDto.java package com.beans9.jpa.member; import lombok.Data; @Data public class MemberDto { private String name; private String address; public Member toEntity() ..
사용자의 이름과 주소를 관리하는 웹API를 SpringBoot와 Jpa를 이용하여 만들어보겠습니다. java 11, gradle 사용 프로젝트 생성 / 라이브러리는 아래와 같이 Lombok, SpringBoot Web, Spring Data Jpa, H2 Database build.gradle plugins { id 'org.springframework.boot' version '2.3.4.RELEASE' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group = 'com.beans9' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { com..
JPA로 조회를 하다보면 연관관계에 데이터를 모두 가져오다 보니 때때로 노출하고 싶지 않은 데이터도 가져오게 된다. 그럴때 쓰는 방법 소스는 이전글을 참조 2019/03/20 - [JPA] - [JPA] manytoone n+1 문제? 예를 들어 아래와 같은 member entity를 가지고 있다고 할때 @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String name; private String phone; private String address; @ManyToOne @JoinColumn(name="team_id") private Team team; } api에는 id와 name만 내..
JPA에서 @manytoone으로 다른 entity와 join했을 경우 list를 출력하면, 리스트를 한번 조회하고, join column의 id 수만큼 다시 select를 하게된다. Member.java@Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String name; @ManyToOne @JoinColumn(name="team_id") private Team team; }MemberRepo.javapublic interface MemberRepo extends JpaRepository {}Team.java@Entity @Getter @Setter public class Team { @..
entity에 Date형인 orderDate가 존재한다고 했을 때 Specification을 이용한 between 검색을 하는 방법이다. 물론 interface에서 바로 해도 되지만 복합적으로 조건을 처리해줘야할 때 Specification은 유용하게 사용된다. 파라미터로 fromDt="2017/08/23" , toDt="2017/08/23" 받고 단순히 아래와 같이 했을 때 제목과 같은 오류가 났다. public static Specification betweenDate(String fromDt, String toDt) {return (root, query, cb) -> {if (fromDt.equals("") && toDt.equals(""))return null;return cb.between(ro..