목록BE (354)
오봉이와 함께하는 개발 블로그
조회 API 컨트롤러 개발 편리한 데이터 확인을 위해 샘플 데이터를 추가하자. 샘플 데이터 추가가 테스트 케이스 실행에 영향을 주지 않도록 다음과 같이 프로파일을 설정하자 프로파일 설정 src/main/resources/application.properties spring.profiles.active=local테스트는 기존 application.properties를 복사해서 다음 경로로 복사하고, 프로파일을 test로 수정 src/test/resources/application.properties spring.profiles.active=test이렇게 분리하면 main 소스코드와 테스트 소스 코드 실행시 프로파일을 분리할 수 있다. 샘플 데이터 추가 @Profile("local") @Component @..
동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용 Where절에 파라미터를 사용한 예제 public List search(MemberSearchCondition condition) { return queryFactory .select(new QMemberTeamDto( member.id, member.username, member.age, team.id, team.name )) .from(member) .leftJoin(member.team, team) .where( usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAge..
동적 쿼리와 성능 최적화 조회 - Builder 사용 MemberTeamDto - 조회 최적화용 DTO 추가 @Data public class MemberTeamDto { private Long memberId; private String usename; private int age; private Long teamId; private String teamName; @QueryProjection public MemberTeamDto(Long memberId, String usename, int age, Long teamId, String teamName) { this.memberId = memberId; this.usename = usename; this.age = age; this.teamId = te..
순수 JPA 리포지토리와 Querydsl 순수 JPA 리포지토리 @Repository public class MemberJapRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public MemberJapRepository(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.clas..
SQL function 호출하기 SQL function은 JPA와 같이 방언(Dialect)에 등록된 내용만 호출할 수 있다. member -> M으로 변경하는 replace 함수 사용 @Test 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); } } s = M1 s = M2 s = M3 s = M4소문자로 변경해서 비교..