어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨
[ JAVA / JPA ] JPA(Java Persistence API)를 사용하는 이유 본문
JPA(Java Persistence API)
- 자바의 ORM(Object-Relational Mapping) 표준 스펙을 정의하는 인터페이스의 모음
- ORM : 객체와 관계형 데이터베이스(RDB) 사이의 데이터 변환을 자동화하기 위한 기술
- 즉, 자바의 객체와 RDB를 어떻게 매핑하고 동작해야하는지 정의하고 있는 것이 JPA
[ 장점 ]
- SQL문을 사용하지 않고 메서드를 통해 DB를 조작하기 때문에 개발자는 비즈니스 로직을 구성하는 것에만 집중할 수 있다.
(어떤 쿼리를 실행해야 하는지만 생각하면 된며, 예측도 쉽다.)
- 부수적인 코드를 줄이고 객체에 대한 코드를 작성하기 때문에 코드의 가독성을 높일 수 있다.
(반복적인 CRUD 쿼리를 처리해준다.)
- 객체 지향적인 코드를 작성할 수 있기 때문에 생산성이 증가한다.
- 매핑하는 정보가 class로 명시 기 때문에 ERD에 대한 의존도를 낮출수 있고, 유지보수와 리팩토링에 용이하다.
- 만약 이전 DBMS에서 다른 DBMS로 데이터를 이전할 경우 해당 DBMS에 맞는 쿼리를 다시 작성해야 하지만,
ORM을 사용하면 쿼리를 사용하지 않기 때문에 유지보수와 리팩토링에 용이한 것.
- 자바 각체에는 상속관계가 존재하는데 데이터베이스에는 상속관계가 존재하지 않는 문제를 해결해준다.
[ 단점 ]
- 설계가 잘못됐을 경우에 속도 저하와 일관성을 무너뜨리는 등의 문제가 발생할 수 있다.
- 복잡하고 무거운 쿼리는 별도의 최적화를 필요로 하기 때문에 결국 쿼리를 사용해야할 수 있다.
[ 구현체 ]
- JPA는 인터페이스 모음이기 때문에 구현할 구현체가 필요하다.
- EclipseLink
- Hibernate
- DataNucleus
'Back - end > JAVA' 카테고리의 다른 글
[ Java / 백준 2675 ] 문자열 문자 단위로 반복해서 출력하기 (0) | 2023.09.11 |
---|---|
[ Java / 백준 9086, 11720] charAt의 사용에 대해서 (0) | 2023.09.05 |
[ Java / 백준 27866 ] 문자열에서 숫자로 문자 찾기 (0) | 2023.09.05 |
[ Java / 백준 10809] 문자열에서 특정 문자를 찾는 방법 (배열,indexOf, contains,IntStream) (0) | 2023.09.05 |
[ Java ] Arrays 클래스 (0) | 2023.09.03 |