목록BE/JPA (112)
오봉이와 함께하는 개발 블로그
스프링 데이터 JPA 리포지토리로 변경 스프링 데이터 JPA - MemberRepository 생성 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 스프링 데이터 JPA 테스트 @SpringBootTest @Transactional class MemberRepositoryTest { @Autowired EntityManager em; @Autowired MemberRepository memberRepository; @Test void basicTest() { Member member = new Member("member1", 10); memberRepository.save(mem..
조회 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..