JPA
JPA는 Java Persistence API 의 약자로서 객체지향 적인 자바와 관계 중심형 데이터베이스의 테이블의 패러다임을 해결하기 위해 만들어진 기술로서 자바 진영의 ORM기술이다.
JPA는 인터페이스라고 볼 수 있는데 그 이유는 JPA는 라이브러리나 프레임워크와 같은 실제 구현체가 있어서 바로 사용하는게 아닌 구현체가 따로 존재하기 때문이다.
주로 사용되는건 하이버네이트라고 한다.
(다른 구현체도 있지만 대다수가 사용하는 구현체는 하이버네이트라고 한다)
JPA를 사용하면 무엇이 좋을까…?
-
쿼리를 작성안해도 된다.
마이/아이바티스를 통해 직접 쿼리를 작성한 경우 테이블 구조에 따라서 쿼리를 직접짜야하지만 JPA는 Entity의 구조만 변경하면 된다. -
DB마이그레이션이 비교적 편리하다.
DB간의 사투리?방언?을 해결해준다
(옵션으로 설정할 수 있는데 Entity에 맞춰서 직접 DDL실행도 해준다)
(운영에써 쓰면 안된다고 하니 DDL은 개발에서만 쓰자…) -
최적화를 잘하면 쿼리가 더욱 빨라진다고 한다
단점은 무엇이 있을까?
-
따로 JPA를 학습해야 하기때문에 러닝커브가 존재한다. (관계매핑이 어렵다…)
-
복잡한 쿼리나 동적 쿼리 사용하기 힘들다 더라(그래서 QueryDSL 쓴다던데…)
아직 여기까지 공부안해서 잘 모르겠다 -
잘못 사용할 경우 리스크가 상당히 크고 설계하기가 다소 어렵고 프로젝트가 다소 복잡해질 수도 있다고 한다
이건 JPA문제점이 아닌데….???
장단점은 추후에도 업데이트를 해야겠다…
