@Entity @NamedQuery( name= "Member.findByUsername", query = "select m from Member m where m.username = :username" ) public class Member extends BaseEntity{ List resultList = em.createNamedQuery("Member.findByUsername",Member.class) .setParameter("username" , memberA.getUsername()).getResultList(); for (Member o : resultList) { System.out.println("Member " + o.getUsername()); } 이런식으로 사용이 가능하다. 사용..
as m 부분 같은 별칭은 fetch join에서는 원칙적으로 사용할 수 없다. 페치 조인에서 페이징을 쓸 수 없는 이유는 일대 다이기 때문에 데이터가 늘어나게 되는데. 이 경우 만약 팀A|멤버1 팀A|멤버2 팀B|멤버3 인 경우 2개만 가져오게끔 페이징을 한다면 팀A만 2개 가져오니 우리가 원래 원하는 팀에 대한 페이징이 불가하다. 만약 다대일로 만들어 페이징을 사용한다면 문제가 없다. 혹은 과감하게 join 없이 team만 불러서 페이징을 넣은 후에 member를 불러 사용한다. 그럼 member를 찾을 때마다 쿼리를 날려야 할텐데 트래픽이 또 발생해 버린다. 이런 때에 @BatchSize를 사용한다. @BatchSize(size = 100) @OneToMany(mappedBy = "team") pr..
String query = "select m from Member m "; List resultList = em.createQuery(query,Member.class).getResultList(); for (Member o : resultList) { System.out.println("Member " + o.getTeam().getName()); } 만약 위의 코드처럼 날렸을 경우 TEAM이 지연로딩으로 되어있을 경우 필요할 때마다 쿼리를 날리게 된다. 같은 team이라면 1번에 1차캐시로 소화되어 문제가 없겠지만 100개의 다른팀으로 표시 된다면 트래픽이 많이 발생할 것이다. 이럴경우 join fetch를 사용해야 한다. String query = "select m from Member m join..
- Total
- Today
- Yesterday
- rejectValue
- 스프링공부
- Java
- 항해플러스
- ArgumentResolver
- 예외처리
- 향해플러스
- 로그인
- 향해99
- hypertexttransferprotocol
- JPA
- 인터셉터
- React
- Intercepter
- 향해플러스백엔드
- 백엔드 개발자 공부
- SpringBoot
- 백엔드 개발자 역량
- reject
- HTTP
- 항해99
- 리터럴
- 컨트
- 스프링부트
- exception
- react실행
- filter
- thymleaf
- jpa api
- BindingResult
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |