목록분류 전체보기 (572)
오봉이와 함께하는 개발 블로그
메소드 이름으로 쿼리 생성 메소드 이름을 분석해서 JPQL 쿼리 실행해준다. 이름과 나이를 기준으로 회원을 조회하려면 어떻게 해야 할까? 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username and m.age :age", Member.class) .setParameter("username", username) .setParameter("age", age) .getResultList(); } 순수 JPA 테스트 코드 @Test void findByUsernameAndAgeGre..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvJEuC/btrLE2x0EU8/R9asRTKLbakBVoptmrH0v0/img.png)
공통 인터페이스 설정 JavaConfig 설정- 스프링 부트 사용시 생략 가능 @Configuration @EnableJpaRepositories(basePackages = "jpabook.jpashop.repository") public class AppConfig { } 스프링 부트 사용시 @SpringBootApplication 위치를 지정한다.(해당 패키지와 하위 패키지 인식) 만약 위치가 달라지면 @EnableJpaRepositories가 필요하다. 스프링 데이터 JPA가 구현 클래스 대신 생성 org.springframework.data.repository.Repository를 구현한 클래스는 스캔 대상이다. MemberRepository 인터페이스가 동작한 이유임. memberReposito..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vLCvp/btrLERJ3fvD/MAmF8D2htLFD8k4mcxLXt0/img.png)
예제 도메인 모델과 동작확인 엔티티 클래스 ERD Member 엔티티 @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") // '일대다'관계에서 '다'가 연관관계 주인이 되어 FK..
스프링 데이터 JPA와 DB 설정, 동작확인 application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/datajpa spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name=org.h2.Driver #이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다. spring.jpa.hibernate.ddl-auto=create # JPA가 쓰는 쿼리를 콘솔에 남기는 설정 # spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate...
스프링 데이터 JPA 소개 https://spring.io/projects/spring-data-jpa 스프링 데이터 JPA는 JPA를 사용할 때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어 있다. 기존의 MemberRepository를 스프링 데이터 JPA로 변경해보자. MemberRepository @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.cla..