JPA는 기존의 반복 코드 제거는 물론, 기본적인 SQL도 JPA가 직접 만들어서 실행한다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
Member.java
package hello.hellospring.domain;
import jakarta.persistence.*;
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//@Column(name = "username")
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
EntityManager : db와의 통신을 처리.
em.persist() : 영구저장
em.find(조회할 타입, 식별자인 PK) : PK를 보고 객체를 조회해줌.
em.createQuery(쿼리, 조회할 타입)
select m from Member m : jpql이라는 쿼리 언어. table 대상이 아니라
객체를 대상으로 쿼리를 날림. 이 쿼리문은 객체 자체를 조회하는 것.
findByName이나 findAll 같은 PK 기반이 아닌 것들은 jpql을 작성해줘야 한다.
JPA는 저장, 조회, 삭제, 업데이트는 sql을 짤 필요없다.
14:47