스프링 부트와 JPA라는 기반 위에, 스프링 데이터 JPA라는 환상적인 프레임워크를 더하면 개발이 정말 즐거워진다.
💡 스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술입니다. 따라서 JPA를 먼저 학습한 후에 스프링 데이터 JPA를 학습해야 합니다.개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공

build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'
application.properties 파일 설정
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
db에 붙으려면 datasource가 필요하다
스프링에게 생성자로 주입을 받아야한다
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import javax.sql.DataSource;
import java.util.List;
import java.util.Optional;
public class JdbcMemberRepository implements MemberRepository{
private final DataSource dataSource;
public JdbcMemberRepository(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public Member save(Member member) {
return null;
}
@Override
public Optional<Member> findById(Long id) {
return Optional.empty();
}
@Override
public Optional<Member> findByName(String name) {
return Optional.empty();
}
@Override
public List<Member> findAll() {
return null;
}
}
JdbcMemberRepository.java save 메소드
@Override
public Member save(Member member) {
String sql = "insert into member(name) values(?)";
Connection conn = dataSource.getConnection(); //데이터베이스 커넥션을 가져온다
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, member.getName());
pstmt.executeUpdate(); //db에 최종적으로 쿼리가 보내진다
return null;
}
gradle설정에 data-jpa는 jdbc도 포함한다
jpa는 인터페이스만 제공이 되는 것이다.
(external libraries 폴더에 hibernate가 추가 된 것을 확인할 수 있다)
ORM이라는 기술이다.(Object-Relaitonal-Mapping)
Mapping은 애노테이션으로 한다
JPA는 Entity 매니저라는 것으로 모든 것이 동작한다