Spring JPA란? 무엇 일까요?

반응형

JPA(Java Persistence API)가 무엇일까요?. JPA는 자바 진영에서는 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음입니다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크 입니다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있습니다.

 

ORM은 또 무엇일까요?

우리가 일반적으로 알고 있는 어플리케이션 Class와 RDB(Relation DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로 어플리케이션의 객체를 RDB 테이블에 자동적으로 매핑해주는 것이라고 보면됩니다. (가만보면... Kafaka Connector랑 비슷하네? 요즘의 Connector컨셉과 비슷한거같음)

 

장점

- SQL 문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있다.

(JPA를 사용하면 내부적으로는 쿼리를 생성하여 DB를 조작한다)

- Query와 같이 필요한 선언문, 할당 등 부수적인 코드가 줄어들고, 각종 객체에 대한 코드를 별도로 작성하여 코드 가독성이 높아진다.

- 객체지향적인 코드 작성이 가능하다(요즘 코틀린이 뜨는걸 보면 JAVA 지향점인 무조건적인 객체지향은 약간 구려지는 듯한 느낌을 받는다)

- 매핑하는 정보가 Class로 명시 되었기 때문에 ERD를 보는 의존도를 낮출 수 있고 유지보수 및 리팩토링에 유리

 

단점

- 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우, 속도 저하 및 일관성을 무너뜨리는 문제점이 생긴다. 결론은 프로젝트의 규모가 클 수록 설계가 중요하다.(말해 뭐하겠음..)

- 사용해야 할 Query가 무겁다면 별도의 Query튜닝을 위해 Query문을 써야할 수도 있음.

 

반응형

댓글

Designed by JB FACTORY