TIL | [Spring] JPA 이해하기

hyemin·2022년 3월 19일
0

Spring

목록 보기
1/7
post-thumbnail
post-custom-banner

JPA(Java Persistence API)

JPA 개념을 잡기전 영속성ORM에 대해 먼저 알아보자

영속성(Persistence)

영속성은 데이터를 생성시킨 프로그램이 종료되어도 사라지지 않는 데이터의 특성이다.
영속성이 없는 데이터는 메모리에만 존재하기 때문에 프로그램이 종료되면 해당 데이터를 사라지게 되므로 파일이나 여러 데이터베이스를 이용해 데이터에 영속성을 부여한다.

Spring에서 데이터 영속성을 위해서 3가지 방법이 이용된다.

  • (Java) JDBC
  • Spring JDBC
  • Persistence Framework

이중 Persistence Framework의 한 종류로 ORM이 존재한다.

ORM이란?

ORM - ObJect Relational Mapping
(Object는 객체, Relational은 관계형 데이터베이스)

객체(Object)는 객체의 언어로, 관계형 데이터베이스(Relational)는 관계형 데이터베이스의 언어로 설계가 이뤄지는데, 그 사이에서 번역기 역할을 해주는 것이 ORM이다.

회사에 따라 데이터베이스 관리자를 두기도 하지만 많은 경우 백엔드 개발자가 DB관리를 같이하게 되는데, ORM이 없다면 객체 언어로 개발을 하면서 관계형 데이터베이스에서 사용하는 SQL로 데이터 관리도 함께 해주는 이중고를 겪어야한다.

SQL 작성이 어렵지는 않지만, Oracle이나 MySQL 등에서 SQL 문법이 조금씩 달라지거나 휴먼에러가 발생하기 쉽다는 문제가 있다.


JPA

JPA는 자바에서 사용되는 ORM의 표준 명세이다.

JPA를 사용하면 SQL을 사용하지 않고 관계형 데이터베이스에 데이터를 CRUD할 수 있게된다.

아래와 같은 SQL문을

String query = "SELECT * FROM EMPLOYEES WHERE ID = ?;
Employee employee = jdbdTemplate.queryForObject(
	query, new Object[] { id }, new EmployeeRowMapper());

간단하게 자바 언어로 표현할 수 있게 된다.

repository.save(new Employee("James", "Ann");

+ Hibernate

JPA의 사실상 표준이 되는 프레임워크
(JPA는 명세서이고 명세서에 충실해 구현한 프레임워크가 Hibernate)

JPA를 사용하지 않고 SQL을 입력하거나, SQL 매퍼를 이용하는 방법도 있다.

JPA 장단점

장점

  • 객체 지향 코드를 사용해 직관적인 비지니스 로직 작성 가능
  • Query보다는 개발에 집중할 수 있음
  • 유지보수가 쉬움
    - JPA를 사용하지 않으면 DB 필드 변경시 모든 SQL을 수정해야 함

단점

  • 프로젝트 로직이 복잡해질 경우 개발 난이도 상승
  • 복잡한 SQL 구현 어려움
  • 불필요하게 DB에 자주 접근하여 성능 저하 유발 가능성

요약

  1. 데이터의 영속성 부여를 위해 ORM이 사용된다
  2. ORM은 객체 언어와 SQL 사이의 번역기 역할을 한다
  3. JPA는 자바 진영의 ORM 기술 표준이다
    - SQL을 사용하지않고 객체 언어로 데이터를 가공할 수 있다
post-custom-banner

0개의 댓글