윤개발

[JPA] Java Persistence API 소개 본문

백엔드/JPA

[JPA] Java Persistence API 소개

DEV_SJ 2020. 2. 17. 23:26

기존 개발의 문제점

 

기존 개발은 객체를 관계형 데이터베이스(RDB)에 저장하는 방식으로 코드를 작성하였다.

 

그러다 보니 객체중심이 아닌 SQL 중심적인 개발을 하였다.

 

 

 

어떤 객체에 대해서 테이블마다 CRUD를 작성하는 반복되는 노가다 작업을 하고있다.

 

또한 수정사항이 생겨서 나중에 추가할 칼럼이 생긴다면

 

기존에 작성했던 CRUD 코드를 모두 수정해야하는 불편함을 겪는다.

 

이 과정에서 잊고 수정하지 않는 부분이 있다면 바로 장애를 유발한다.

 

 

 

상속 등의 객체를 잘 설계하여도 RDB에는 2번 이상의 쿼리를 날려야하는 불편함이 생긴다.

 

예를 들어 아래 그림처럼 Animal 이라는 객체는 id와 이름을 가지고 있다고 하자.

 

이를 상속받은 Dog는 품종을 가지고 있다. 

 

객체지향적으로 잘 설계 하였지만 관계형 데이터 베이스에 저장하기 위해서는 Animal에 insert, Dog에도 insert를 해야

 

하는 작업을 하게된다.

그래서 Animal이라는 하나의 객체에 다 때려넣게 되는데 이는 위에서 말했듯 SQL에 의존하는 개발이다.

 

객체지향적으로 설계하는 것을 목표로 하여도 관계형 데이터베이스에 의존하는 개발을 하게되는 것이다.

 

 

JPA는 자바의 ORM(Object relational mapping) 표준

객체는 객체, RDB는 RDB대로 설계하여 매핑해주는 작업을 해준다.

 

자바 어플리케이션과 JDBC의 사이에서 자동으로 매핑을 해주고 간단한 코드로 CRUD를 처리할 수 있게 된다.

 

 

 

생산성 향상

jpa를 이용하여 코드를 작성하면 아래와 같이 매핑 없이 한줄로 코드를 작성할 수 있다.

 

C : jpa.persist(dog)

R : Dog dog = jpa.find(dogId)

U : dog.setKind("웰시코기)

 

D : jpa.remove(dog)

 

유지보수시에도 객체에 필드하나만 추가해주면 되는 것이다.

 

 

객체는 객체대로 RDB는 RDB대로설계할 수 있게 만들어주는 것이 JPA이다.

 

'백엔드 > JPA' 카테고리의 다른 글

[JPA] H2 database 연결 & JPA 프로젝트 생성  (0) 2020.02.22
Comments