-
[김영한 스프링] 17. JPASpring/스프링 입문 2023. 3. 31. 00:09
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 추가 후 오른쪽 코끼리 클릭
spring.jpa.show-sql=true : jpa가 실행하는 sql을 볼 수 있음
spring.jpa.hibernate.ddl-auto=none : 자동으로 테이블을 만들어 주는 기능 끔
@Entity 추가함으로써 jpa가 관리하는 entity가 됨
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
- pk 생성을 자동으로 해줌
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import javax.persistence.EntityManager;
import java.util.List;
import java.util.Optional;
public class JpaMemberRepository implements MemberRepository {
private final EntityManager em;
public JpaMemberRepository(EntityManager em) {
this.em = em;
}
public Member save(Member member) {
em.persist(member);
return member;
}
public Optional<Member> findById(Long id) {
Member member = em.find(Member.class, id);
return Optional.ofNullable(member);
}
@Override
public Optional<Member> findByName(String name) {
List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class).setParameter("name", name).getResultList();
return result.stream().findAny();
}
@Override public List<Member> findAll() {
return em.createQuery("select m from Member m", Member.class).getResultList();
}
}jpa를 사용하려면 @Transactional이 꼭 필요함
빨간 박스 내용 변경
테스트 성공
'Spring > 스프링 입문' 카테고리의 다른 글
[김영한 스프링] 19. AOP (0) 2023.04.01 [김영한 스프링] 18. 스프링 데이터 JPA (0) 2023.04.01 [김영한 스프링] 16. 스프링 JdbcTemplate (0) 2023.03.30 [김영한 스프링] 15. 스프링 통합 테스트 (0) 2023.03.30 [김영한 스프링] 14. JDBC (0) 2023.03.29