[JPA] JPA 란?
JPA (Java Persistence API)
JPA 는 java 진영의 ORM 기술의 표준이다.
라고하면 무슨말인지 모르겠다. ORM 이 뭔지부터 살펴보자 !
ORM = Object-Relational Mapping
Object(객체) 와 Relational(관계형 데이터베이스)를 매핑(연결)한다는 뜻이다.
ORM framework 는 객체와 테이블을 매핑해서 패러다임의 불일치를 개발자대신 해결해준다.
객체는 객체대로 생성하고, 데이터베이스는 데이버베이스에 맞도록 설계 가능케 해준다.
개발자는 일일이 SQL 문을 작성하지 않고 객체로 구현할 수 있도록 하는 프레임워크 이다.
여기서잠깐! 패러다임불일치가 뭔가요?
--> 추상화, 상속, 다형성과 같은 특성을 가진 객체지향과 이러한 특성이 없는 데이터베이스는 서로 기능과 표현방법이
모두 다르다. 이것을 객체와 관계형DB 의 패러다임불일치 문제라고 한다.
#JPA의 역할
1. 엔티티 분석
2. INSERT SQL 생성
3. JDBD API 사용
4. 패러다임 불일치 해결
#JPA 장점
1. 특정 구현기술에 대한 의존도를 줄일 수 있다.
2. 다른 구현기술로 손쉽게 이동할 수 있다.
#JPA 사용이유
1. 생산성
1) 자바 컬렉션에 객체를 저장하듯이 JPA 에게 저장할 객체만 전달하면 JPA 가 대신 처리해준다.
ex> jpa.persist(member); // 저장
Member member = jpa.find(memberId); //조회
2) 반복적인 코드와 CRUD(Create, Remove, Update, Delete)용 SQL 을 개발자가 직접 작성하지 않아도 된다.
3) CREATE TABLE 과 같은 DDL 문을 자동으로 생성해줄 수 있다.
2. 유지보수
1) SQL 을 직접 다루면 엔티티에 필드를 하나만 추가해도 그에 해당하는 SQL과 결과를 매핑하기 위한 JDBC API 코드를 모두
변경해야한다. JPA 를 사용하면 JPA 과 이런과정을 대신 해준다.
2) JPA가 패러다임의 불일치 문제를 해결하므로 객체지향 언어가 가진 장점들을 활용해서 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계할 수 있다.