728x90
반응형

전체 글 125

[ Spring-Boot ] JPA @EntityGraph 사용하기

@EntityGraph 란? 연관관계가 있는 엔티티를 조회할 경우 지연 로딩으로 설정되어 있으면 연관관계에서 종속된 엔티티는 쿼리 실행 시 select 되지 않고 proxy 객체를 만들어 엔티티가 적용시킨다. 그 후 해당 프락시 객체를 호출할 때마다 그때그때 select 쿼리가 실행된다. 자세한 사항은 JPA의 지연 로딩에 관하여 찾아보자. 위 같은 연관관계가 지연 로딩으로 되어있을 경우 fetch 조인을 사용하여 여러 번의 쿼리를 한 번에 해결할 수 있다. @EntityGraph는 Data JPA에서 fect 조인을 어노테이션으로 사용할 수 있도록 만들어 준 기능이다. Entity package study.datajpa.entity; import lombok.*; import javax.persiste..

[ Spring-Boot ] Data - JPA NamedQuery 사용하기

순수 JPA 가 아닌 Data JPA에서 NamedQuery를 사용해 보겠습니다. Data JPA 는 기본적으로 메서드 명으로 쿼리를 구현하여 실행시킨다. https://docs.spring.io/spring-data/jpa/docs/current/reference/html Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query..

카테고리 없음 2021.06.14

[ Spring-Boot ] Data - JPA 사용하기

DB는 H2 DB를 사용하였습니다. 관련 설정이나 설치방법은 제외하겠습니다. 테스트에 사용할 엔티티를 생성 @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) // 기본생성자를 만들어 주는 기능 public class Member extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "member_id") private Long Id; private String username; private int age; @ManyToOne(fetch = LAZY) @JoinColumn(name = "team1_id") private ..

Spring Cloud Netflix - Eureka

- Spring Cloud Netflix Spring Cloud Netflix는 Spring 환경 및 기타 Spring 프로그래밍 모델 관용구에 대한 자동 구성 및 바인딩을 통해 Spring Boot 앱에 대한 Netflix OSS 통합을 제공합니다. 몇 가지 간단한 주석을 사용하여 애플리케이션 내부의 공통 패턴을 빠르게 활성화 및 구성하고 전투 테스트를 거친 Netflix 구성 요소로 대규모 분산 시스템을 구축 할 수 있습니다. 제공되는 패턴에는 Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) 및 Client Side Load Balancing (Ribbon)이 포함됩니다. https://spring.io..

[ Spring-Boot ] JPA QueryDsl 정렬 사용하기

안녕하세요 이번 글에서는 QueryDsl 사용 시 정렬(ORDER BY)을 사용하여 보겠습니다. @Service ( @Controller , View는 생략하겠습니다. ) public Page getBoardSearchList(int page, BoardSearch boardSearch) { //페이징 조건과 정렬 조건을 같이 보내 준다. PageRequest pageRequest = PageRequest.of(page, 15, Sort.by(Sort.Direction.fromString(boardSearch.getOrderBy()), boardSearch.getSort())); return boardQuerydslRepository.getSearchBoardList(pageRequest, boardSe..

[ Spring-Boot ] JPA Embedded 타입 사용하기

안녕하세요 이번 글에서는 JPA에서 Embedded 타입을 사용하여 보겠습니다. 먼저 임베디드 타입이 어떤 것 인지 간략하게 알아보겠습니다. - Entity 타입 : @Entity가 선언되어 있는 객체를 뜻한다. - 값 타입 : int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 - 임베디드 타입 : 주로 기본 값 타입을 모아서 만들어서 복합 값 타입이라고도 말한다. 이제 코드로 알아보겠습니다. @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name="member_id") private Long id; @NotEmpty private String name; @Column(name =..

[ Spring-Boot ] JPA 지연로딩(LAZY) 과 즉시로딩(EAGER)

안녕하세요 이번 글에서는 JPA에서의 지연 로딩과 즉시 로딩에 대해서 알아보겠습니다. 두 가지 Entity를 예시로 만들겠습니다. Member @Entity @Getter @Setter public class Member{ @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "member_id") private Long Id; private String username; private int age; @ManyToOne() @JoinColumn(name = "team1_id") private Team team; Team @Entity @Getter @Setter public class Team { @Id @GeneratedValue @C..

카테고리 없음 2021.05.23

[ Spring-Boot ] JPA Entity 사용하기

안녕하세요 이번 글에서는 Enttiy에서 사용하는 몇 가지 annotation을 정리해 보겠습니다. [ 클래스에 선언 ] @Entity > JPA 가 관리하는 엔티티로 설정된다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entitty를 필수로 선언하여야 한다. > 기본 생성자 필수 , final 클래스, enum, interface, inner 클래스 사용 X > 저장할 필드에 final 사용 X @Table > 엔티티와 매핑할 테이블을 지정 > 속성 name : 매핑할 테이블 이름 catalog : 데이터베이스 catalog 매핑 schema : 데이터베이스 schema 매핑 uniqueConstraints : DDL 생성 시에 유니크 제약 조건 생성 [ 필드에 선언 ] @Id > PK 칼럼으로 사..

[ Spring-Boot ] JPA @GeneratedValue 사용하기

@GeneratedValue란? -> JPA에서 Entity의 Primary Key를 생성하여 주는 기능이다. @Id @GeneratedValue @Column(name = "member_id") private Long Id; 위처럼 Pk로 사용될 Entity의 프로퍼티에 @Id를 선언하여 준다음 @GeneratedValue를 선언하여 준다. @GeneratedValue는 strategy 네 가지 전략을 바꿔 가며 사용할 수 있다. 1. IDENTITY @GeneratedValue(strategy = GenerationType.IDENTITY) > 기본 키 생성을 데이터베이스에 위임한다. Entity를 등록할 때 DB에서 AUTO_INCREAMENT 하여 PK를 생성 후 INSERT 한다. MySQL, ..

728x90
반응형