개념 | SQL 직접 사용하는 것의 문제, 그 해결책인 JPA

728x90
목표
1) 문자열 SQL 직접 사용하는 것의 한계를 알고, 그 해결책인 JPA, Hibernate, Spring Data JPA 가 무엇인지 이해
2) Spring Data JPA를 이용하여 데이터 생성, 조회, 수정, 삭제
3) 트랜잭선 필요성, 스프링에서 트랜젝셔 제어 방식 익히기
4) 영속성 컨텍스트-트랜잭션 관계 이해하고, 영속성 컨텍스트 특징 알기

🏓 SQL 직접 사용하는 것의 문제, 그 해결책인 JPA

  • 우리는 이전까지 DB에 접근하기 위해 SQL 을 직접 작성하였다.

🟦 SQL 직접 작성하는 것의 문제점

1) 실수 가능 & 실수 인지 시점 느리다.

즉, 컴파일 타임 때 발견 못하고 런타임 때 발견하는 오류.

SQL문 작성 과정에서 실수의 가능성이 존재하고, 이를 발견하기까지 시간이 걸린다.

2) 특정 DB에 종속적이게 된다.

  • SQL문법도 mySQL, MSSQL 등등 사용하는 DB에 따라 조금씩 다르다. DB라도 바뀌면 SQL문을 다 다시 작성해야 한다.

3) 불필요한 반복 작업 多

  • 기본적인 INSERT , SELECT, UPDATE, DELETE 등 아무리 기본적인 쿼리라고 필드 하나하나를 매핑시켜서 조작해야 한다는 것이 번거롭고, 불필요한 반복작업을 감수해야 한다.

4) 객채(Object)와 DB 테이블은 패러타임이 다르다.

→ 이렇듯, 직접 SQL 작성하여 개발하는 것에는 어려움이 많다. 그래서 JPA가 탄생한다.


🟦 JPA의 탄생 | JAVA Persistence API

  • JPA: 자바 진영의 ORM 기술 표준 의미

1) JPA 의 영속성

  • DB 사용하여 유저 정보를 서버 생사와 무관하게 영구적으로 저장 가능하게 만드는 것이 ‘영속성’이다.
  • 따라서 JPA는 데이터를 영구적으로 보관하기 위해 JAVA 진영에서 정해진 API 규칙이다.

2) ORM (Object Relational Mapping)

  • 객체와 관계형DB 테이블을 매핑시킨다.

즉, JPA 는 객체과 관계형 DB 테이블을 매핑시켜서 데이터를 영구적으로 저장할 수 있도록 정해진 Java 진영의 규칙이 된다.

  • 추가적으로 JPA도 API(규칙)에 불과하므로, 규칙 기반으로 작성이 필요하다.
  • 이 JPA를 실제 코드로 작성한 가장 유명한 프레임워크가 바로 ‘하이버네이트’ (Hibernate)이다.

⬛ 하이버네이트

  • 자바 언어를 위한 ORM 프레임워크
  • JPA 구현체, 내부적으로 JDBC API 사용
728x90