일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그래프 탐색
- 소수 판정
- 깊이 우선 탐색
- MYSQL
- 백트래킹
- 그래프 이론
- 브루트포스 알고리즘
- 재귀
- 구현
- DB
- 문자열
- 너비 우선 탐색
- 정수론
- Vue
- 스택
- springboot
- n과 m
- 정보처리기사
- 프로젝트
- Spring Security
- SWEA
- 다이나믹 프로그래밍
- dfs
- 백준
- 수학
- 알고리즘
- 배포
- 프로그래머스
- 자료 구조
- JPA
- Today
- Total
목록springboot/JPA (7)
영원히 남는 기록, 재밌게 쓰자
객체와 테이블 매핑하기@Entity해당 어노테이션이 붙은 클래스는 JPA에서 관리한다. 이를 엔티티라고 한다.(@Entity가 붙지 않으면 JPA와 전혀 관계 없는 그냥 마음대로 사용하고 싶은 클래스에 불과하다.) JPA를 사용하여 테이블과 매핑할 클래스는 꼭! @Entity를 붙여주어야 한다.@Entity를 사용할 때 주의할 점JPA 스펙 상 기본 생성자는 필수이다(파라미터가 없는 public 또는 protected) -> jpa 스펙상 이렇게 사용해야 하는게 규정이 되어 있다. 일단 그렇게만 알아두도록 하자, 너무 깊게 들어가는 건 일단 패스!final, enum, interface, inner클래스에 사용 못함 -> 이런 성격의 클래스에 @Entity를 붙이지 못한다.저장할 필드에 final을 사용..

김영한 - jpa 활용 2편을 공부하고 정리했습니다. 예제 상황은 주문 + 배송정보 + 회원을 조회하는 API를 만드는 상황이다. 주문 정보에서 배송정보와 회원을 끌어와서 조회하는 상황이다. 그림에서 주문과 회원은 N:1, 주문과 배송의 관계는 1:1 관계이다. 모두 XToOne 관계로 각 엔티티가 주문과 직접적으로 연결되어 있는 상황이다. 주문 정보로 부터 배송정보와 회원을 조회하는 요청을 하면 다음과 같은 에러가 발생한다. IllegalStateException, StackOverflowError 발생 왜 발생했을까?컨트롤러 호출부터 엔티티로 접근하는 흐름을 살펴보자. 그림은 회원 엔티티에 대해서만 엔티티 접근 흐름을 나타냈다. API컨트롤러라서 jackson 객체로 엔티티를 변환하려고 할 때 주문..

피드백 조회를 할 때 한 학생에 대한 피드백을 띄워줄 때 모든 피드백을 다 가져와서 페이지에 뿌려주고 있다. 만약 데이터가 많이 쌓인다면 문제가 발생할 수 있고 하나의 피드백을 찾기 위해 스크롤을 많이 내려야 할 수 있다. 이를 queryDSL의 페이징을 사용하여 페이징 처리를 시도하려고 한다. queryDSL에서는 페이징 처리를 할 때에 PageImpl을 사용한다. PageImpl 사용 방식 설명을 조금 보았는데 content: 페이징을 적용한 결과가 담기는 부분total: 전체 페이징 적용이 가능한 총 크기 content의 인자는 JPAQuery (queryDSL)의 fetch() 결과를 의미한다. 피드백을 조회하기 위한 fetch() 구문List fetch = query.select( ..

프록시를 왜 사용해야할까? 예제를 통해 알아보자 멤버 하나를 조회할 때 팀의 정보도 데이터 베이스로 부터 한번에 조회를 해야할까? 그럴 경우가 있을 수 있다. 또는 반대로 멤버를 조회할 때에 멤버만 조회하고 싶은 경우가 있다. 프록시 초기화는 처음에는 아무것도 없는 빈 껍데기 프록시 객체만 가지고 있다. 타겟이라는 변수를 초기화 시킬 때 영속성 컨텍스트에 진짜 엔티티 객체를 요청하는 동작을 거친다. 꼭 필요한 데이터를 적절한 때에 가져오기 위해서 하이버네이트에서는 프록시 객체를 사용하는 기능을 제공한다. em.find()와 em.getReference() (em: 엔티티 매니저) em.find() → 실제 엔티티 조회 em.getReference() → 프록시 가자 객체를 조회 (DB를 거치지 않아 빈껍..