ORM이란?
영속성(Persistence) : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.
자바는 영속성을 위한 JDBC를 제공한다. 하지만 사용자가 직접 데이터에 접근하기 위한 SQL을 작성하고, 결과값을 다시 dataType으로 바인딩시켜주는 작업을 일일히 수행해야한다는 번거러움이 있다.
ORM은 개발자가 직접 JDBC 프로그래밍을 하지 않도록 기능들을 제공해주는 Persistence Framework 종류이다.
- Object와 DB의 테이블을 매핑하여 데이터를 객체화한다.
- CRUD관련 메소드를 사용하면 자동으로 SQL이 만들어져 개발자가 반복적인 SQL을 작성할 필요가 없다.
- 복잡한 쿼리의 경우 JPQL를 혼용하여 사용할 수 있다.
- Java ORM 기술에 대한 인터페이스 표준을 JPA라 하며, 이를 구현한 것 중 하나가 Hibernate 이다.
JPA / Hibernate 란?
JPA는 Java Persistence API의 약자로, 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스다. 따라서 JPA를 정의한 javax.persistence 패키지의 대부분은 인터페이스, enum, Exception, 각종 Annotation으로 이루어져 있다.
JPA의 방식으로 인터페이스를 구현한 구현체가 필요한데 이 중 하나가 Hibernate이다.
Hibernate는 JPA를 구현한 class와 같이 보면 된다.
여러 블로그에 나와있는 EntityManager를 사용한 예제들은 Hibernate EntityManager를 사용한 것으로 보면 된다.
Spring Data JPA 란?
Spring Data JPA는 JPA를 한 단계 더 쉽게 사용할 수 있도록 Spring에서 제공하는 모듈 중 하나이다.
JPA를 한 단계 추상화시킨 Repository 인터페이스를 제공하여, 해당 인터페이스에서 정해진 규칙대로 메소드를 입력하면, Spring이 메소드 이름에 맞는 쿼리를 날리는 구현체를 만들어 Bean으로 등록해준다.
객체의 영속화라던지, EntityManager를 사용한 코드를 개발자가 직접 사용할 필요가 없이 Repository에 JPA Repository와 엔티티, ID 타입을 지정해주기만 하면 된다.
public interface UserRepository extends JpaRepository<User, Long> {
// 쿼리 메소드. 일정 규칙이 존재한다.
Optional<User> findByUsername(String username);
}
참고 블로그
https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/
JPA, Hibernate, 그리고 Spring Data JPA의 차이점
개요 Spring 프레임워크는 어플리케이션을 개발할 때 필요한 수많은 강력하고 편리한 기능을 제공해준다. 하지만 많은 기술이 존재하는 만큼 Spring 프레임워크를 처음 사용하는 사람이 Spring 프레
suhwan.dev
https://gudwnsgur.tistory.com/14
Spring 면접 질문 모음
[ EJB : Enterprise Java Bean ] ∘ Servlet, JSP, JDBC 등과 같은 JAVA SE 종류중 하나 ∘ 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션 ∘ JSP는 화면 처리, EJB는 업무 로직을 처리한다. ∘ 단점 ·
gudwnsgur.tistory.com
'기타' 카테고리의 다른 글
[Kafka] SpringBoot 에서 Kafka 연동하기 (0) | 2023.08.08 |
---|---|
[AWS MediaConvert] SpringBoot 연동하여 미디어 파일 DASH 포맷으로 변경하기 (0) | 2023.07.21 |
Spring Boot 면접 질문 정리 (0) | 2023.06.02 |
Git (3) - merge와 branch (0) | 2023.01.05 |
Git (2) - Git 다루기 (0) | 2023.01.03 |