2.MariaDB와 JPA

이번 장에서는 예제에서 사용하는 MariaDB를 설정하고 Spring Data JPA라는 라이브러리를 통해 JPA기술에 대해서 학습한다고 한다.
2장을 본격적으로 나가기에 앞서 JPA가 뭔지를 짚고 넘어가겠다.

JPA(Java Persistence API)란
자바 퍼시스턴스 API 또는 자바 지속성 API라고 불리며
자바 플랫폼 SE,EE에 사용되는 응용프로그램(자바 플랫폼의 개념과 SE와 EE의 차이점)에서
관계형 데이터베이스의 관리를 표현하는 자바 API이며
현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.
즉, 실제로 동작하는 것은 아니며 ORM을 사용하기 위한 인터페이스를 모아둔 것이고,
ORM에 대한 자바 API규격이며 Hibernate,OpenJPA등이 JPA를 구현한 구현체이다.
이 외에도 EcipseLink, DataNucleus,TopLink 등이 있다.
결국 인터페이스이기 때문에 JPA를 사용하기 위해서는 JPA를 구현한
위와 같은 ORM프레임워크를 사용해야 한다.

ORM(Object Relational Mapping)이란 객체-관계 맵핑의 줄임말이며
객체-관계 매핑을 풀어서 이야기하면
우리가 흔히 쓰는 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을
구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블을
자동으로 매핑(연결)하는 것을 의미한다.

그러나 클래스와 테이블은 기존부터 호환가능성을 두고 만든것은 아니고
자바 언어는 객체지향으로 이루어져 있지만
데이터베이스는 데이터 중심으로 구조화가 되어있고
객체의 상속, 다형성 같은 개념이 없다보니
객체와 데이터베이스가 지향하는 점이 달라지게 된다.
이것을 패러다임 불일치라고 부르며 이 문제는 ORM을 통해
객체 간의 관계를 바탕으로 SQL문을 자동으로 생성해 불일치를 해결해준다.

따라서 ORM을 이용하면 따로 SQL문을 작성할 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있다.
JPA는 애플리케이션과 JDBC사이에서 동작하고, 개발자가 JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL문을 호출해 DB와 통신한다.
JPA의 동작과정은 개발자가 JAP를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
JPA는 크게 저장과정과 조회과정으로 나뉘는데 저장과정은
exampleDAO 객체를 저장하고 하고 싶을때 개발자는 JPA에 해당 객체를 넘긴다.
JPA는 example 엔티티를 분석후 Insert SQL문을 생성, 그후 JDBC API를 사용하여 SQL을 DB에 전송한다.
조회과정은 example객체를 조회하고 싶을때 개발자는 example테이블의 pk값을 JPA에 넘긴다
JPA는 엔티티의 매핑 정보를 바탕으로 적절한 SELECT SQL문을 생성후에
JDBC API를 사용하여 SQL을 DB에 전송한다.
그 후 DB로 부터 결과를 받아와 ResultSet를 객체에 모두 매핑한다.
쿼리를 JPA가 만들어 주기 때문에 OBject와 RDB간의 패러다입 불일치를 해결할 수 있다.

JPA를 사용하는 이유는 크게 여러가지가 있지만 가장 중요한 것들이 몇가지 있다
1.SQL 중심적인 개발에서 객체 중심으로 개발을 할 수 있다.

2.생산성이 좋다.
       - JPA를 사용하는 것은 마치 JAva Collection에 데이터를 넣었다 빼는 것처럼 사용할 수 있게 만든다.
       -CRUD가 간단하다.
            저장: jpa.persist(example)
            조회: Example example = jpa.find(exampleId)
            수정: example.setname("변경할 이름")
            삭제: jpa.remove(example)
       -특히 수정이 굉장히 간단하다.
            객체를 변경하면 자동으로 DB에 UPDATE Quesy문이 전송된다.

3.유지보수가 간단하다.
       기존:필드 변경 시 모든 SQL을 수정해야 한다.
       JPA:필드만 추가하면 된다. SQL은 JPA가 관리하기 때문에 건드릴 것이 없다.

_4. Object와 RDB 간의 패러다임 불일치 해결_ -작성중

좋은 웹페이지 즐겨찾기