
Java에서의 ORM 기술 표준으로 사용하는 인터페이스 모음
인터페이스이기 때문에 구현체가 필요, 대표적으로 Hibernate가 있음
1차 캐시

쓰기 지연


변경 감지(Dirty checking)

지연 로딩, 즉시 로딩
지연 로딩 : 연관관계가 매핑된 엔티티 조회시 해당 엔티티의 참조 객체를 사용하는 시점에 조회하는 방법
즉시 로딩 : 연관관계가 매핑된 엔티티 조회시 해당 엔티티의 모든 객체를 조회하는 방법
JDBC (Java DataBase Connectivity)
스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트
SQL이 아닌 객체 중심으로 개발 -> 생산성 증대, 유지보수 난이도 낮음
기본적인 CRUD SQL를 작성하지 않아도 된다.
JpaRepository<Entity, ID 자료형> 와 같은 형태로 레포지토리에 상속받아 사용
Spring Data JPA의 작동구조는 다음과 같다.

Blog API 구축

Lombok 어노테이션 사용 및 JPA Auditing을 통한 자동 시간 매핑
# Article.java
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EntityListeners(AuditingEntityListener.class) // Auditing 기능 추가
@Entity
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "content", nullable = false)
private String content;
@CreatedDate
@Column(name = "created_at")
private LocalDateTime createAt;
@LastModifiedDate
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@Builder
public Article(String title, String content) {
this.title = title;
this.content = content;
}
public void update(String title, String content){
this.title = title;
this.content = content;
}
}
main 함수에서 @EnableJpaAuditing 어노테이션을 붙여서 활성화를 시켜 주어야함.
# BeDay6Application.java
@EnableJpaAuditing
@SpringBootApplication
public class BeDay6Application {
public static void main(String[] args) {
SpringApplication.run(BeDay6Application.class, args);
}
}