일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코딩테스트연습
- Kubernetes
- k8s
- SpringMVC
- superBuilder
- ORM
- hibernate
- 해시맵
- 뷰
- Oracle
- Vue
- dabase
- Spring
- programmers
- docker
- vuejs
- CKA
- IntelliJ
- cd
- CI/CD
- 알고리즘
- java
- map
- 자바
- builder-pattern
- JPA
- CI
- Di
- DevOps
- 프로그래머스
Archives
- Today
- Total
문홍의 공부장
[Java JPA] JPA 개념 정리 본문
반응형
JPA 개념 정리
what is JPA(Java Persistence API) ?
- 자바 ORM 기술에 대한 API 표준 명세. (ORM을 사용하기 위한 인터페이스의 모음)
- JPA는 API의 규격일 뿐. (라이브러리나 프레임워크가 아님) Hibernate, OpenJPA 등이 JPA를 구현한 구현체(ORM 프레임워크)이다.
what is ORM (Object-Relational Mapping) ?
- 객체가 DB 테이블이 되도록 매핑시켜주는 프레임워크.
- 객체 간의 관계를 바탕으로 SQL 을 자동으로 생성
- 프로그램의 복잡도를 줄이고, 자바 객체와 쿼리를 분리할 수 있으며, 트랜잭션 처리나 기타 데이터베이스 관련 작업들을 편리하게 처리할 수 있는 방법.
SQL Mapper | ORM |
---|---|
자바 클래스와 sql을 매핑 | 자바 클래스와 DB 테이블을 매핑 |
SQL을 명시하여 직접 DB 조작 | 객체간의 관계를 바탕으로 SQL 자동 생성 |
필드를 매핑시키는 것이 목적 | RDB의 관계를 Object 에 반영하는 것이 목적 |
myBatis, jdbcTemplate | JPA, Hibernate |
JPA 동작 과정
- JPA 는 애플리케이션과 JDBC 사이에서 동작하여
- 개발자가 JPA 를 사용하면, JPA 내부에서 JDBC API 를 사용하여 SQL 을 호출, DB 와 통신한다.
why JPA ?
DB중심 설계의 단점을 보완하고, 효율적인 개발 방법론에 대한 고민.
=> 단순히 객체(DTO, VO) 를 데이터 전달 목적으로만 사용하는 것이 아닌, 객체지향의 장점을 살리고 객체와 테이블을 매핑시켜주는 ORM이 주목받기 시작.
장점
- 객체 중심적 개발 가능
- SQL 코드의 반복, 객체지향과 관계지향 데이터베이스의 패러다임 불일치 해소
- DBMS에 대한 종속성 감소: DB 컬럼 변경에 따른 테이블/쿼리 수정 작업 감소
- 생산성, 유지보수 용이
- SQL을 직접 작성하는 것이 아닌, 객체를 사용하여 동작 -> 재사용성 up
- 실시간 처리용 쿼리에 최적화
단점
- 업무 비즈니스가 복잡할 경우 JPA로 처리하기 어려움 (통계처리 등)
- 대용량 데이터 기반 환경에서 튜닝 어려움
JPA를 사용하는 것이 무조건적으로 좋은 것은 아니며, 업무환경 및 장단점을 고려하여 Mybatis/JPA 사용 여부를 결정하여야 함.
Reference.
반응형
'개발 > Java' 카테고리의 다른 글
[Spring] Spring AOP 이해하기 (1) - Spring AOP 의 개념 (0) | 2023.04.23 |
---|---|
[Java JPA] JPA 영속성 컨텍스트 개념 정리 (0) | 2022.04.22 |
[Java] Division by Zero in Java: Exception, Infinity, or Not a Number (0) | 2022.01.07 |
[Java] ObjectMapper를 사용하여 Object 를 Map 으로 변경하기 (0) | 2022.01.07 |
[Java] Java Stream 활용하기 (0) | 2022.01.05 |