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 문을 직접 작성하는게 효율이 좋을 수 있다.
++내 경우지만 연관관계에서 머리가 터지는 줄 알았다....진짜 어렵다..........