Spring[Info] - JPA 프로그래밍
2021. 7. 2. 13:49ㆍSpring/Spring[Info]
반응형
🤔 ORM? (Objet-relational mapping)
- 객체는 객체대로 설계하고, 관계형 데이터베이스는 베이스대로 설계
- ORM 프레임워크가 중간에서 매핑해줌
- 대중적인 언어에는 대부분 ORM 기술이 존재
즉, SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있다.
ex) Select * from member; 이를 ORM을 사용하면 member.findAll()이라는 메서드 호출로 데이터 조회가 가능하다.
🤔 JPA? (Java Persistence API)
- 한마디로 ORM을 사용하기 위한 인터페이스를 모아둔 것
- 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
결국 인터페이스이기 때문에 JPA를 사용하기 위해선 ORM 프레임워크를 사용해야함
🤔 Hibernate?
- JPA를 사용하기 위해서 JPA를 구현한 ORM 프레임워크중 하나
JPA 장점
- 생산성이 뛰어나고 유지보수가 용이하다.
- 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
- SQL을 직접적으로 작성하지 않고 객체를 사용하여 동작하기 때문에 유지보수가 더욱 간결하고, 재사용성도 증가한다.
- DBMS에 대한 종속성이 줄어든다.
- DBMS가 변경된다 하더라도 소스, 쿼리, 구현 방법, 자료형 타입 등을 변경할 필요가 없다.
- 즉 프로그래머는 Object에만 집중하면 되고, DBMS를 교체하는 작업에도 비교적 적은 리스크와 시간이 소요된다.
JPA 단점
- 어렵다
- JPA의 장점을 살려 잘 사용하려면 학습 비용이 높은 편이다.
- 복잡한 쿼리를 사용해야 할 때에 불리하다.
- 잘못사용할 경우 실제 SQL문을 직접 작성하는 것보다는 성능이 비교적 떨어질 수 있다.
결국 업무 환경, 장단점을 고려하여 Mybatis를 사용할지 JPA를 사용할지 결정해야한다.
반응형