Spring

JPA란?

devNam 2020. 11. 14. 12:00
반응형

Spring 프레임워크를 사용하면서 JPA와 Hibernate에 관해서 알게됐다.

이 세 가지 기술이 결합된 웹 애플리케이션은 말 그대로 신세계다.

JSP만 이용해서 웹을 만들 때보다 유지보수, 코드의 가독성 이 훨씬 수준이 높았다.

그래서 Spring으로 간단하게 만든 게시판을 올리기에 앞서 JPA 란 뭔가에 대해서 정리하고 싶었다.

 

 

1. 기본 개념

 

JPA에 대해 알려면 ORM을 간단하게 알아야한다.

 

ORM이란?

1. Object-Relational Mapping 의 약자, 객체와 관계형 데이터베이스를 매핑한다.

-> 객체와 DB의 테이블이 매핑을 이룬다. -> 객체가 테이블이 되도록 매핑 시켜주는 프레임워크

 

2. 프로그램의 복잡도를 줄이고 자바 객체와 쿼리를 분리할 수 있어 트랜잭션 처리나 기타 DB 관련 작업들을 좀더 편리하게 처리할 수 이다.

 

3. SQL 쿼리를 직접 생성하지 않고 직관적인 메서드를 이용하여 데이터를 조작할 수 있다.

->ex) SQL문(Select * from Member;) -> Member테이블과 매핑된 객체 member 를 통해 member.findAll() 메서드를 호출하여 데이터 조회가 가능

 


 

JPA란?

1. Java Persistence API의 약자, 자바 ORM 기술에 대한 API 표준 명세이다

-> ORM을 사용하기 편하게 만들어진 인터페이스의 집합

 

2. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스

 

3. ORM 에 대한 자바 API 규격, Hibernate, OpenJPA은 JPA를 구현한 구현체

 

 


 

Hinbernate란?

 

1. JPA를 사용하기 위해서 JPA를 구현한 ORM 프레임워크 중 하나

-> JPA 명세의 구현체, JPA의 인터페이스를 직접 구현한 라이브러리

 

 


 

2. JPA 사용 이유

 

1. 장점

- 생산성이 뛰어나고 유지보수가 용이하다

->객체지향적인 코드로 더 직관적이고 비지니스 로직에 집중할 수 있다.

->객체지향적으로 데이터를 관리할 수 있기 때문에 전체 프로그램 구조를 일관되게 유지할 수 있다.

-> SQL 문을 직접 작성하지 않고 객체를 사용하기 때문에 유지보수가 간결하며 재사용성도 증가한다.

-> 객체에 맞는 코드를 개별로 작성하기에 가독성이 올라간다.

 

DBMS에 대한 종속성이 줄어든다.

-> DB 가 변경되더라도 소스나 쿼리, 자료형 타입 등을 변경할 필요가 없다.

 

2. 단점

- 어렵다.

-> JPA의 장점을 살려 사용하려면 많은 공부가 필요하다.

-> 복잡한 쿼리를 사용해야할 때 머리 터진다. 

-> 잘못 사용할 경우 SQL 문을 직접 작성하는게 효율이 좋을 수 있다.

++내 경우지만 연관관계에서 머리가 터지는 줄 알았다....진짜 어렵다..........

반응형