일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- JavaScript
- BufferedReader
- Git
- 리눅스
- scanner
- 정보처리기사필기요약
- select문
- 프로그래머스 SQL
- html
- 프론트엔드
- 백준
- String클래스
- sql문
- 클래스
- 스프링
- 백엔드
- Linux
- 예외처리
- where
- Java
- mybatis
- 자바스크립트
- 웹개발
- MySQL
- 형변환
- SQL
- github
- 정보처리기사
- DML
- 메서드
- 프로그래머스 sql 고득점 kit
- 데이터 조회
- 개발자
- 자바
- 입출력
- 프로그래밍
- order by
- select
- 알고리즘
- StringBuilder
- Today
- Total
ToBe끝판왕
[ JPA ] JPA 개념 / 사용 이유 / 장단점 본문
JPA ( Java Persistence API )
▶ 개념
• 자바 진영에서 ORM( Object - Relational Mapping ) 기술 표준으로 사용되는 인터페이스 모음
• 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크 ( 실제적으로 구현 X )
• JPA 를 구현한 대표적인 오픈소스로는 Hibernate가 있다.
※ ORM( Object - Relational Mapping )
• 객체와 관계형 데이터베이스의 데이터를 자동으로 Mapping( 연결 ) 해주는 것을 의미한다.
• 객체지향 프로그래밍 - 클래스 사용 / 관계형 데이터베이스 - 테이블 사용
객체 모델과 관계형 모델간의 존재하는 불일치를 ORM을 통해 객체간의 관계를 바탕으로
SQL을 자동으로 생성하여 불일치 해결한다.
▶ JPA 동작
• 애플리케이션과 JDBC 사이에서 동작한다.
• JAP를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호출해서 DB와 통신
▶ JAP 사용이유
• SQL 중심적인 개발에서 객체중심적인 개발이 가능하다.
• 생산성이 증가한다.
- DDL문 자동 생성
- 간단한 메서드로 CRUD가 가능해진다.
- SQL을 작성하고 JDBC API 를 사용하는 반복적인 일을 대신 처리해준다.
• 유지보수가 쉽다.
- 기존 : 필드 변경시 모든 SQL 수정
- JPA : 필드만 추가하면 된다. SQL은 JAP 가 처리한다.
• Object와 RDB간의 패러다임 불일치 해결
- 상속 / 연관관계 / 객체 그래프 탐색 / 비교하기 같은 패러다임 불일치를 해결한다.
- JAVA의 존재하는 상속관계를 객체의 상속관계를 지원하지 않는 데이터베이스에서 JPA는 아래방식으로 해결
▶ JAP 의 장 / 단점
• 장점
- SQL문이 아닌 메서드를 통해서 DB 조작이 가능하기 때문에, 개발자는 객체 모델을 이용하여 비즈니스 로직을
구성하는데만 집중이 가능해진다.
- Query와 같이 필요한 선어문 / 할등등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여
코드의 가독성을 높일수 있다.
- 객체지향적인 코드 작성이 가능해진다.
- 유지보수 및 리팩토링에 유리하다.
• 단점
- 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우에는 속도 저하 및 일관성을 무너뜨리는 문제점이
발생할 수도 있다. ( 개발자가 의도하지 않은 자동으로 생성된 Query로 인해 성능이 저하되기도 함 )
- 복잡하고 무거운 Query문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 쓰는게 나은
상황이 발생할 수도 있다.
- 학습비용이 비싸고 시간이 오래걸린다.
※ 주의사항
스프링에서 흔히 사용하는 JPA는 JPA를 이용하는 Spring-data-jpa 프레임워크이다.
'■ 프로그래밍 SKILLS > MYBATIS , JPA' 카테고리의 다른 글
[ MyBatis ] 마이바티스 동적쿼리 (1) | 2024.11.20 |
---|