티스토리 뷰
https://ghrnwjd.tistory.com/entry/JAVA-JPA-ORM
저번글에 이어서 작성해보려고 합니다.
JPA
JPA는 자바 진영의 ORM 기술 표준이다.
객체와 테이블의 차이로 책에서 가장 이해가 잘 되었던 구문은 연관관계에 대한 설명이었다.
객체는 참조
를 통해 접근하고 참조에 접근하여 연관된 객체를 조회
하지만 테이블은 외래키
를 사용하여 연관관계를 가지고 조인
을 사용하여 연관된 테이블을 조회한다.
또한 JPA는 내부적으로 JDBC API를 사용하는데 JDBC는 DB 프로그래밍을 위한 API이며 DB종류에 상관없이 지원한다.
JPA 구조
JPA: 자바 진영의 ORM 기술에 대한 API 표준 명세
Hibernate: JPA의 구현체이고, 내부적으로 JDBC를 이용한다. ORM 프레임워크로 10년이상 개발되고 있다.
Spring Data JPA: JPA를 사용하기 쉽게 스프링에서 제공하는 모듈로 내부적으로 JPA 구현체를 이용한다.
현재 @Repository Annotation을 사용하여 DB에 접근하는 것은 Spring Data JPA를 사용하는 것이다.
@Repository
public interface UserRepository extends JpaRepository<User, String> {
}
기본적으로 제공해주는 메서드는 다음과 같다.
JPA 명명규칙
findBy, countBy, removeBy, deleteBy 등 다양한 규칙이 있다.
프론트엔드에서 DB접근을 하면 안될까
현재 React, SpringBoot로 프로젝트를 진행하고 있는데 React에서 직접 DB를 접근할 수도 있을텐데라는 생각이 들었다.
실제로 찾아보니 Javascript 전용 ORM 기술중 하느인 sequelize도 있었다.
DB접근방식을 두가지로 나눌 수 있는데 2-tier, 3-tier 구조가 있다.
2-tier 구조로 설계시 보안, 유지보수의 어려움이 존재하여 클라이언트와 DB사이의 어플리케이션 서버를 두어 단점을 보완한다고 한다.
참고자료
'🍃 스프링' 카테고리의 다른 글
[SPRING] 컬렉션 (0) | 2023.07.30 |
---|---|
[SPRING] Entity, DTO (0) | 2023.07.24 |
[SPRING] 외부 REST api 사용하기 (0) | 2023.05.20 |
[SPRING] IntelliJ 설정 (0) | 2023.05.15 |
[SPRING] 남의 코드 이해하기 (1) | 2023.05.07 |