본문 바로가기

Programming/Java & JSP & Spring

JPA(Java Persistence API)란?

JPA(Java Persistence API)란?


JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을

JPA라고 바꾸고 Java SE, Java EE를 위한 영속성(Persistence) 관리와 ORM을 위한 표준 기술이다.


그렇다면 ORM은 무엇일까?

ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다.

RDB테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기

쉽지 않다. 때문에 ORM을 사용해 오브젝트와 RDB사이에 존재하는 개념과 접근을 객체 지향적으로

다루기 위한 기술이다.


JPA를 쓰는 이유?

먼저 JPA를 제외하고 자바를 통해 DB에 접근할 수 있는 방법을 살펴보면 크게 3가지를 꼽을 수 있다.

  • JDBC API
  • IBatis(MyBatis)
  • 스프링 JDBC Template : SQL Mapper

이러한 접근 방법에는 몇가지의 문제가 존재한다.


1. CRUD의 SQL이 반복된다.

CRUD기능을 사용할 모든 모델과 객체에 대해 반복하고 또 반복해야 한다.


2. SQL에 의존적인 개발을 해야한다.

예를 들어, 객체에 변수 하나를 추가하기라도 하면 그 객체와 매핑된 테이블, 그 테이블을 조인하고 있는 모든

테이블에 관한 SQL문을 수정해야 한다.


이런 문제점을 해결하기 위한 것이 객체 + 관계형 데이터베이스 모델 즉, ORM 프레임워크이다.

ORM Framework가 JPA만 있는 것이 아니라 Java 진영에서 개발한 ORM기술 표준이 JPA이다.


우선 JPA는 DAO를 생각하지 않아도 된다. Entity 클래스를 생성하는 것이 바로 DB테이블을 만드는 것이기 때문이다.

한마디로 DB에다가 create쿼리를 직접 날리지 않아도 된다는 것이다.

Entity클래스의 @(어노테이션)을 붙이는 것만으로 DB와 자동으로 매핑을 해버린다.

DB가 없으면 create를 하고, 컬럼이 없으면 자동으로 alter한다.








참조 :

http://blog.woniper.net/255

http://ramees.tistory.com/18

http://blog.naver.com/PostView.nhn?blogId=noranlemon84&logNo=220774678674&parentCategoryNo=&categoryNo=19&viewDate=&isShowPopularPosts=true&from=search