Spring DB - 2

Codren·2021년 9월 12일
0

Section 1. JPA

1. JPA (Java Persistence API)

Java 객체와 관계형 DB 사이를 매핑하는 ORM 기술 표준

  • 기존의 반복 코드는 물론이고, 기본적인 SQL 도 JPA 가 직접 만듬
  • SQL 과 데이터 중심 설계 -> 객체 중심의 설계
  • 인터페이스 (=기술 표준) 이므로 실제 구현체는 Hibernate 등등




2. JPA 환경 설정

  • JPA 라이브러리 추가
// jdbc 도 포함하고 있음
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  • properties 추가
    - show-sql : JPA가 생성하는 SQL을 출력한다.
    - ddl-auto : 테이블을 자동으로 생성 기능 (create 지정하면 테이블도 자동 생성)




3. JPA Entity 지정

  • @Entity Annotation 지정
  • Id = primary key, GenerateValue = DB가 값을 자동으로 생성, IDENTITY = 식별
  • @Column Annotation 값과 일치하는 컬럼에 매핑




4. JPA Repository 생성

  • EntityManager 객체 사용 (Spring Boot 가 자동으로 bean 생성)




5. insert 기능

  • 알아서 member 객체 안에 존재하는 id, name 값을 매핑해서 튜플로 저장




6. select 기능

  • find 메서드 이용
  • Member.class 와 같이 Entity 객체의 클래스를 지정
  • Member m = Member as m (앨리어싱)
  • :name 부분에 setParameter 값 매핑




7. 나머지 설정

  • Service 객체 @Transactional Annotation 지정
@Transactional // JPA 사용시에 필수 어노테이션 설정
public class MemberService {...}
  • Config 파일에서 Repository 구현체 변경
private EntityManager em;

@Bean
public MemberRepository memberRepository() {
	JdbcTemplateMemberRepository(dataSource);
        return new JpaMemberRepository(em);
}




8. Hibernate SQL 쿼리

  • 회원 등록 시 insert 쿼리가 JPA 를 통해서 생성되어 전송됨



Section 2. Spring Data JPA

1. Spring Data JPA

개발자가 JPA 를 더 쉽고 편하게 사용할 수 있도록 JPA 를 한 단계 추상화시킨 Repository 인터페이스를 제공




2. Spring Data JPA Repository

  • JpaRepository 를 상속받은 SpringDataJpaMemberRepository 인터페이스가 자동으로 구현체로 생성되어 bean 등록됨
  • JpaRepository <Entity 명, primary key Type>
  • Entity (Model) 객체 또한 상속 받음
  • findByName() , findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공 (프로젝트에 알맞게 이름 지정)




3. Config 파일

  • 자동으로 생성된 JpaRepository 구현체가 자동으로 @Autowired DI 됨




4. Spring Data JPA Repository 인터페이스

  • CRUD 작업등 공통적인 DB 접근 및 조작 추상 메서드 존재
  • 개발자의 프로젝트에 맞게 메서드명 지정

0개의 댓글