일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- 전략 패턴
- 스프링 컨테이너
- 팩토리패턴
- 빈 타입 조회
- 자바의 면접
- 참조형 반환타입
- 팩토리 패턴
- 기본형 매개변수
- TCP/IP 4계층
- 참조형 매개변수
- 스프링 빈
- @Tranctional
- 옵저버 패턴
- 백준 2164
- 네트워크
- k번째큰수
- 리버스 프록시
- www.naver.com치면 발생하는일
- mvvm패턴
- removeAll
- 포워드 프록시
- Class Loader
- 후위표기식
- try-catch
- 쇠막대기
- 백준 1935
- 싱글톤 패턴
- 스프링 싱글톤
- SOLID원칙
- Today
- Total
목록JPA (14)
스파이더 웹 개발

회원 등록 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){ } @Data static class CreateMemberResponse { private Long id; } } @RequestBody의 경우 Json 데이터의 내용을 Member 엔티티에 매핑 시켜준다 PostMan을 통해 post요청시 응답결과는 아래와 같다 현재 처럼 설계한 경우 엔티..
JPA 설계시 가장 객체지향스럽게 설계하는 것은 엔티티 안에서 비즈니스 로직을 구현하는 것이다 setter, getter를 사용하여 외부에서사용하는 것이 아니다 @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "dtype") @Getter @Setter public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int price; private int stockQuantity; @ManyToMany(mappedBy = "items") pr..
엔티티에는 가급적 Setter를 사용하지 말자(변경되는 부분이 많고 유지보수가 어렵다) 모든 연관관계는 지연 로딩으로 설정 즉시로딩은(EAGER)은 예측이 어렵고, JPQL을 실행할 때 N+1 문제가 자주 발생한다 컬렉션은 필드에서 초기화 하자 (ex_List list = new ArrayList();)

경로 표현식 .(점)을 찍어 그래프를 탐색하는 것 분류 상태 필드 단일 값 연관 필드 컬렉션 값 연관필드 상태 필드 : 단순히 값을 저장하기 위한 필드 ex) m.name 연관 필드 : 연관관계를 위한 필드 단일 값 연관 필드 @ManyToOne, @OneToOne, 대상이 엔티티(m.team) 컬렉션 값 연관 필드 @OneToMany, @ManyToMany, 대상이 컬렉션(m.orders) 상태 필드 : 경토 탐색의 끝, 탐색 x ex) select m.name from Member m 단일 값 연관 경로 : 묵시적 내부조인 발생, 추가 탐색o ex) select m.team(에서 끝나지않고, team 필드로 추가 탐색가능).name from Member m 컬렉션 값 연관 경로 : 묵시적 내부 조인 ..
JPA는 다양한 쿼리 방법을 지원 JPQL QueryDSL 네이티브 SQL JPQL (객체지향 SQL) 검색을 할 때 테이블이 아닌 엔티티를 객체를 대상으로 검색 예제) try { List resultList = em.createQuery( "select m from Member m where m.id like '%kim%'", Member.class ).getResultList(); tx.commit(); } 결과 Hibernate: /* select m from Member m where m.id like '%kim%' * JPQL 문법 엔티티와 속성은 대소문자 구분을 해야한다 JPQL 키워드는 대소문자 구분 하지 않는다 결과 조회 query.getResultList(): 결과가 하나 이상일 때, 리..
JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원 엔티티의 키나 나이의 값을 변경해도 식별자로 인식가능 값 타입(불변을 만들어 사용하자) 단순히 값으로 사용되는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예)숫자 1을 2로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본 값 타입 임베디드 타입 컬렉션 값 타입 기본값 타입 - 생명주기를 엔티티에 의존 ex) 엔티티를 삭제하면 기본 값 타입도 함께 삭제 - 값 타입은 공유 하면 안된다 임베디드 타입 새로운 값 타입을 직접 정의할 수 있다 주로 기본 값 타입을 모아 만들어서 복합 값 타입이라고도 한다 예를들어 Member 엔티티에 집 주소를 가진다고..