본문 바로가기
Back-End

[Back-End] JPA 개념정리

by 집돌이디벨로퍼 2024. 6. 7.

어제 일단 JPA를 사용해보고자 해서 일단 사용해보자라는 마인드로 사용해 테스트까지 완료하였는데 생각해보니 내가 JPA가 뭔지 알생각은 없었던 것 같다 그래서 JPA에 대해서 개념정리해보는 시간을 갖으려고 글을 쓴다.

 

JPA

1. JPA는 라이브러리도 아니고 스프링에서 제공하는 것도 아닌 JAVA에서 제공하는 API이다.

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

3. ORM을 사용하기 위해 만든 인터페이스

4. SQL을 매핑하는 것이 아닌 자바 클래스와 DB테이블을 매핑하는 것이다.

5. 엔티티를 유연하게 관리할 수 있다, 간단하고 경량화된 개발을 할 수 있다.

6. ORM을 사용하기 위한 인터페이스를 모아둔 것이며, JPA를 사용하기 위해서는  JPA를 구현한 Hibernate,EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 한다.

 

(ORM: 객체와 DB의 테이블이 매핑을 이루는 것을 말한다, 즉 객체가 테이블이 되도록 매핑 시켜주는 것. 또한 SQL쿼리를 입력하지 않고도 쿼리 메서드를 호출하여 데이터 조회가 가능하다. => 생산성 높아짐, 하지만 쿼리가 복잡해질 경우 쿼리 메서드를 사용하는데 한계가 있으므로 Mybatis와 같이 사용하기도 한다. )

 

자동 생성(까먹을까봐)

- @Id와 @GeneratedValue를 같이 사용한다.

- GenerationType 옵션으로 전략을 지정한다.

 

JPA Hibernate(하이버네이트)

1. Hibernate가 지원하는 메서드 내부에서는 JDBC API가 동작하고 있으며, 단지 개발자가 직접 SQL을 작성하지 않을 뿐이다.

2. HQL은 완전히 객체 지향적이며 이로써 상속, 다형성, 관계 등의 객체지향의 강점을 누릴 수 있다.

3. HQL은 쿼리 결과로 객체를 반환하며 프로그래머에 의해 생성되고 직접적으로 접근할 수 있다.

 

 

어제 하이버네이트를 다뤄보기도 했어서 궁금증도 해결하고 좋았다 물론 특성이 더 많지만 내가 기억할 수 있는데 한계가 있기 때문에 중요하다고 생각된 것만 따로 적어놓고 공부할 예정이다

 

 

출처: https://livenow14.tistory.com/70 [경험의 연장선:티스토리]

출처:https://velog.io/@modsiw/JPAJava-Persistence-API%EC%9D%98-%EA%B0%9C%EB%85%90

'Back-End' 카테고리의 다른 글

[Back-End] JVM 메모리 공부  (1) 2024.06.30
[JPA] TEST코드 수정  (0) 2024.06.07
감사 추적기능  (0) 2024.06.05
HTTP 상태 코드 (하나씩 쓰면서 공부하는 중)  (0) 2024.06.05