본문 바로가기


JPA

[JPA] JPA시작하기 - JPA란?

[JPA] JPA시작하기 - JPA란?

     JPA(JAVA PERSISTENCE API)

     JPA를 쓰는 이유

JPA를 제외한 자바를 통한 DB 접근 방법

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

위의 접근 방법의 문제점

1.CRUD의 SQL이 반복된다. 

JDBC API를 예를 들어 

JAVA에서 Player라는 객체가 있을 때 

 

회원정보를 조회하고 싶으면 다음과 같은 과정을 거쳐야 한다

1.조회 기능을 할 함수를 선언

2.SQL문 작성

3.SQL을 JDBC API를 통해 실행

4.API에서 가져온 데이터를 객체에 매핑

 

만약, 회원을 추가하는 기능을 구현하고 싶다면 다음과 같은 과정을 거쳐야한다.

1.회원을 추가하는 함수를 선언

2.SQL문 작성

3.정보가 입력된 객체를 SQL에 전달

4.JDBC API를 사용해서 SQL을 실행

 

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

2.SQL에 의존적인 개발을 하게 된다.

이 문제는 쉽게 떠올릴 수 있다 예를 들어 객체에 변수 하나를 추가하기라도 하면 그 객체와 매핑된 테이블, 그 테이블을 조인하고 있는 모든 테이블에 관한 SQL문을 수정해야 한다.
 
이런 문제점을 해결하기 위한 것이 객체 + 관계형데이터베이스 모델 즉 ORM(Object Relational Mapping) 프레임워크 이다.
관계형 데이터베이스 테이블, 그리고 그 테이블의 정보를 담을 객체를 매핑에 데이터베이스를 객체처럼 사용하는 것이라고 (아주 정확하지는 않지만) 이해하면 편하다.
 
ORM Framework가 JPA만 있는 것은 아니고 JAVA진영에서 개발한 ORM기술 표준이 JPA이고 스프링에서 적극 지원하면서 널리 이용되고 전자정부표준 프레임워크가 Spring인 만큼 JPA도 표준 프레임워크이다.
 

JPA의 장점

  • CRUD SQL을 작성할 필요가 없다. JPA API를 사용하면 SQL없이 CRUD가 가능하다.
  • 조회된 결과를 객체로 매핑 하는 작업도 대부분 자동으로 처리
예를 들어 DB안에 Player라는 테이블에 number이라는 변수가 있다고 하면

 

@Column(name = "number")
private String playerNumber;
private Integer number;

위의 두가지 방법 모두 DB와 매핑하는 방법이다 @Column이라는 어노테이션을 붙이고 테이블내의 변수명을 적어주든가 아니면 그냥 테이블 내의 변수명과

동일하게 클래스내에서 변수명을 선언해주면 자동으로 매핑 된다.

 

  • 생산성과 유지보수성이 좋아진다. 

SQL문을 작성할 필요할 필요가 없으니 초기 생산혹은 후에 유지보수하는데 코드단만 조금 수정해 주면 되니 유지 보수성이 뛰어나다.

예를 들어,

매핑할 때 초기 세팅때는 변수명을 동일하게 했다가 

혹시 테이블내에서 변수명이 바뀌게 되면 어노테이션의 속성만 변경해 주는 것으로 재매핑이 끝난다.

새로운 변수를 추가하게 되더라도 변수명을 동일하게 혹은 @Column어노테이션을 붙이는 것으로 매핑이 끝나게된다.

 

 

다음 포스팅에서는 기본적인 JPA API를 이용한 CRUD에 대해서 포스팅하겠습니다.

 

 

 

 

 

본 JPA포스팅은 자바ORM표준JPA프로그래밍(김영한 저) 를 보고 공부한 내용을 바탕으로 작성되었습니다.

끝!