일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- 스프링 핵심 원리
- 자바
- 백준
- SpringBoot
- java
- http
- 그리디
- Spring Boot
- 김영한
- pointcut
- Exception
- kotlin
- spring
- Servlet
- transaction
- JPQL
- Greedy
- 스프링
- 인프런
- JDBC
- AOP
- Proxy
- db
- QueryDSL
- Thymeleaf
- jpa
- 알고리즘
- 스프링 핵심 기능
- springdatajpa
- Today
- Total
목록QueryDSL (27)
개발자되기 프로젝트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oxvt6/btrd1P6olSK/uOZ0kg723dK5jnyeztPgWK/img.png)
해당 기능은 제약이 커서 실무에서 사용하기에는 현실적으로 어려움..ㅜㅜ 1. 인터페이스 지원 : QuerydslPredicateExecutor Repository가 QuerydslPredicateExecutor을 상속받으면 메서드에 Querydsl에서 사용하는 조건을 넘겨줄 수 있다. @Test public void querydslPredicateExecutorTest(){ Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("membe..
1. Controller개발 @GetMapping("/v2/members") public Page searchMemberV2(@ModelAttribute MemberSearchCondition condition, Pageable pageable){ return memberRepository.searchPageSimple(condition, pageable); } @GetMapping("/v3/members") public Page searchMemberV3(@ModelAttribute MemberSearchCondition condition, Pageable pageable){ return memberRepository.searchPageComplex(condition, pageable); } Query..
1. SpringData Paging 활용 스프링 데이터의 Page, Pageable을 활용해보자. 전체 카운트를 한번에 조회하는 단순한 방법 데이터 내용과 전체 카운트를 별도로 조회하는 방법 2. 인터페이스에 두 가지 기능 추가 public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); Page searchPageSimple(MemberSearchCondition condition, Pageable pageable); Page searchPageComplex(MemberSearchCondition condition, Pageable pageable); } 3. 전체 카운트를 한번에 조회하는 단순한 방법 s..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bem0eH/btrd22czctq/b8cqpEFxcKSnznUvBxiTUK/img.png)
1. SpringDataJPA 적용 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 2. 사용자 정의 Repository Querydsl을 사용하려면 사용자 정의 Repository 사용 필요함. 사용자 정의 리포지토리 사용법 사용자 정의 인터페이스 작성 사용자 정의 인터페이스 구현 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 MemberRepository 가 MembeRepositoryCustom을 상속 받기 때문에 search() 사용 가능. spring 에서 자동으로 구현체 매핑해줌. 2.1 MemberRepository public interface Member..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bs5bH8/btrd0GogqJa/6UsojgbmNGjJTXhdfllND0/img.png)
데이터 확인을 위해서 샘플 데이터를 추가하자. 테스트케이스 실행에 영향을 주지 않기 위해 톰캣이 돌아갈 때만 샘플 데이터가 들어가도록 설정하자. --> 테스트케이스, 톰캣의 프로파일 분리 1. 프로파일 설정 main.resources.application.yml test.resources.application.yml 2. 샘플 데이터 추가 @Profile 을 통해 application.yml의 active와 대응됨. @PostConstruct : bean 생성 이후 해당 메서드 실행. JPA 데이터 변경은 Transaction안에서 이루어져야함 @Profile("local") @Component @RequiredArgsConstructor public class InitMember { private fi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ONAps/btrd0GodolT/7OfUE86WdB5LyY8CVK9b41/img.png)
1. Builder @Data public class MemberTeamDto { private Long memberId; private String username; private int age; private Long teamId; private String teamName; public MemberTeamDto() { } @QueryProjection public MemberTeamDto(Long memberId, String username, int age, Long teamId, String teamName) { this.memberId = memberId; this.username = username; this.age = age; this.teamId = teamId; this.teamName..
1. 순수 JPA Repository -> Querydsl @Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public MemberJpaRepository(EntityManager em) { this.em = em; this.queryFactory = new JPAQueryFactory(em); } public void save(Member member){ em.persist(member); } public Optional findById(Long id){ Member findMember = em.find(Member.class, id..
1. SQL Function 호출 SQL Function은 JPA와 같이 Dialect에 등록된 내용만 호출이 가능함. 2. member를 M으로 변경하는 replace 함수 사용 @Test public void sqlFunction(){ List result = queryFactory .select(Expressions.stringTemplate( "function('replace', {0}, {1}, {2})", member.username, "member", "M")) .from(member) .fetch(); for (String s : result) { System.out.println("s = " + s); } } select function('replace', member1.username,..