일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin ::
- 기능적 요구사항
- 수정자주입
- 스프링di
- 소프트웨어의 품격
- open-session-in-view
- 그래프큐엘
- jpa no session
- ioc컨테이너
- 스프링
- jpa lazy
- 스프링부트 도커
- method refetence
- 생성자주입
- java predicate
- 자바 필터
- 토비의 스프링
- kotlin 리팩터링
- 정적팩토리메서드
- spring formatter
- 도커 이미지 빌드
- Spring
- fetch join
- 비기능적 요구사항
- 스프링 시큐리티 설정
- 동적파라미터
- IOC
- Atomicity
- 스프링 포매터
- 스프링시큐리티
- Today
- Total
목록분류 전체보기 (109)
공부기록
@EntityGraph fetch join fetch가 LAZY로 되어있어도 연관된 객체를 즉시 조회한다. 위와 같이 Member -> Team 관계를 맺고 있을 때 fetch 옵션이 LAZY라면 Member 엔티티를 조회할 때, 연관된 Team 엔티티는 프록시 객체로 조회된다. 이때 셀렉트 쿼리는 Member만을 찾는 셀렉트쿼리 한번이 나가고, Member.getTeam().getName(); 같이 프록시 객체의 실제값을 호출할 때 그제서야 Team에 대한 쿼리도 나간다. 만약 Team이 두 개라면 N + 1문제가 터진다. 1은 Member, N(2)은 Team. 다음과 같이 fetch 조인으로 Member와 Team을 조인시켜 한방쿼리로 해결한다. @Query("select m from Member ..
순수 JPA레포지토리의 페이징과 스프링 데이터 JPA레포지토리의 페이징. 순수 JPA레포지토리 MemberJpaRepository.class public List findByPage(int age, int offset, int limit) { return em.createQuery("select m from Member as m" + " where m.age = :age" + " order by m.username asc", Member.class) .setParameter("age", age) .setFirstResult(offset) .setMaxResults(limit) .getResultList(); } MemberJpaRepositoryTest.class @Transactional @Test v..
MemberController ... @PostMapping("/members") public Member save(@RequestBody Member member) { return memberService.create(member); } ...MemberControllerTest @WebMvcTest(MemberController.class) class MemberControllerTest { @Autowired MockMvc mockMvc; @MockBean MemberService memberService; @Test void create() throws Exception { Member member = getMockMembers().get(0); when(memberService.create(me..
코드 다음과 같은 컨트롤러와 서비스가 있다. SampleController @RestController public class SampleController { private SampleService sampleService; public SampleController(SampleService sampleService) { this.sampleService = sampleService; } @GetMapping("/hello") public String hello() { return "hello " + sampleService.getName(); } }SampleService @Service public class SampleService { public String getName() { return "..