[스프링 입문 by 김영한] 6. 스프링 DB 접근 기술

Hazel Park·2021년 2월 14일
0
post-custom-banner
  • H2 데이터베이스 설치
  • 순수 JDBC
  • 스프링 통합 테스트
  • 스프링 JdbcTemplate
  • JPA
  • 스프링 데이터 JPA

DB 접근 기술

  1. 순수 JDBC
  2. 스프링 JdbcTemplate // 반복코드 줄여줌
  3. JPA // SQL 안 짜도 됨. 객체 중심 설계.
  4. 스프링 데이터 JPA // JPA 기술을 스프링에다 한 번 감싸서 제공해주는 기술. JPQL 작성 안 하고 가능.

스프링 데이터 JPA 추천!

JPA

  • JPA : 표준 API
    • ORM (
      Object-Relational Mapping, 객체 관계 매핑)
  • Hibernate : 구현체(구현기술)

@Entity // JPA 가 관리하는 엔티티가 됨

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Id// P.K.
@GeneratedValue // DB에서 생성해주는 값
GenerationType.IDENTITY // DB가 알아서 생성해주는값

@Column(name = "username")
private String name;

@Column

EntityManager를 주입 받아야 한다.

  • P.K. 기반 단건 조회 는 persist(), find() 등으로 처리 가능
  • 그 외 조회조건 주거나, 다건 조회 등은 JPQL 작성해줘야 함
// save
em.persist(member);

// findById
Member member = em.find(Member.class, id);

// findByName
List<Member> result = em.createQuery("select m from Member m where
  m.name = :name", Member.class)
                  .setParameter("name", name)
                  .getResultList();
          return result.stream().findAny();

// findAll
// JPQL 쿼리 : 객체를 대상으로 쿼리를 날리면 SQL로 변환됨 
return em.createQuery("select m from Member m", Member.class)
                  .getResultList();

JPA 사용시 항상 트랜잭션이 있어야 한다.

@Transactional

스프링 데이터 JPA

스프링 부트와 JPA만 사용해도 개발 생산성이 정말 많이 증가하고, 개발해야할 코드도 확연히 줄어듭니다. 여기에 스프링 데이터 JPA를 사용하면, 기존의 한계를 넘어 마치 마법처럼, 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공합니다.

참고: 실무에서는 JPA와 스프링 데이터 JPA를 기본으로 사용하고, 복잡한 동적 쿼리는 Querydsl이라는 라이브러리를 사용하면 된다. Querydsl을 사용하면 쿼리도 자바 코드로 안전하게 작성할 수 있고, 동적 쿼리도 편리하게 작성할 수 있다. 이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, 앞서 학습한 스프링 JdbcTemplate를 사용하면 된다.

profile
금융에 진심인 개발자
post-custom-banner

0개의 댓글