반응형
스프링 부트를 공부하며 떼놓을 수 없는 기술인 JPA (Java Persistence Api)
나는 공부를 하며 이 JPA 때문에 많이 힘들었다.
대체 왜 필요한것이고 왜 쓰는 것일까?
일단
JPA는 인터페이스다.
이 JPA를 쓰기 위해선 구현체가 필요한데 이 대표적인 프레임워크로 Hibernate 하이버네이트가 있다.
그래서 이게 다 뭘 의미할까?
웹개발을 할때 많이들 객체지향 언어(Java / kotlin) + 관계형 데이터베이스 (MySQL / Oracle) 조합으로 한다.
이전 실습때 java 기반의 Spring + Mybatis 로 CRUD 게시판 구현을 했다.
이 Spring + Mybatis 실습을 하며 쿼리문을 작성하기 위해 SQL 문법을 모르면 안됐다.
여기서 또 복잡한 쿼리문을 들어가려면 mybatis만의 동적 SQL 문법을 따로 보며 작성해야 했다.
여기서 JPA가 등장했다.
개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행합니다. 개발자는 항상 객체지향적으로 코드를 표현할 수 있으니 더는 SQL에 종속적인 개발을 하지 않아도 됩니다.
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 82p
+ 책 참고
https://book.naver.com/bookdb/book_detail.nhn?bid=15871738
결국
JPA는
객체지향 프로그래밍과 관계형 데이터베이스 사이의 패러다임 일치를 위한 기술이라고 한다.
다시 말해 객체를 RDB에 매핑하기, 객체를 객체대로 설계하기 위한 기술로 볼 수 있다.
JPA를 사용하며 객체 중심 개발을 하므로 생산성이 향상되고 유지보수에도 편리해졌다고 한다.
요즘 떠오르는 기술이니 잘 배워둬야겠다.
+참고
반응형
'Backend > JPA' 카테고리의 다른 글
[JPA] ManyToMany 연관관계 (mappedby / fetchType) (0) | 2022.10.26 |
---|---|
[JPA] ManyToOne, OneToMany 연관관계 (mappedby / fetchType) (0) | 2022.10.18 |
[JPA] OneToOne 연관관계 (mappedby / fetchType) (0) | 2022.10.14 |
[JPA] Entity 생성일시 수정일시 자동 입력 방법 2가지 (@CreatedDate vs @CreationTimestamp) (0) | 2022.10.04 |
[JPA] 영속성 관리 (Entity Manager / Persistence Context / 엔티티 생명주기) (2) | 2022.09.29 |
댓글