티스토리 뷰
JPA는 데이터베이스 기술보다는 데이터를 객체지향 관점으로 관리할 수 있는 객체지향 기술로 전 세계 스프링 개발자들이 가장 많이 사용하는 데이터 처리 기술입니다.
보통 JPA를 처음 접한 개발자들은 여느 다른 프레임워크와 마찬가지로 '와! 이런 걸 어떻게 생각해냈지?'라는 생각을 하게 될 것입니다. 기존의 JDBC API
부터 JdbcTemplate
, iBatis
, myBatis
에 이르기까지 점점 편리해졌다고는 하지만 약간의 노가다(?)가 포함된 작업들을 해왔던 개발자들에게는 하나의 단비와도 같은 기술이라고 할 수 있겠습니다.
자바 ORM 표준인 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스를 매핑해줍니다.
JPA를 도입하게되면 개발 생산성, 유지보수 측면에서 확실한 차이를 느낄 수 있기 때문에 JPA를 한 번 맛 본(?) 개발자들은 JPA를 맛보기 전으로 돌아가고 싶어 하지 않습니다.
물론 객체 관점에서만 생각하다보면 데이터베이스 작업의 최적화에 대해 소홀해질 수 있습니다. 데이터베이스는 기업의 가장 중요한 자산이고 가장 큰 비용이 드는 리소스 중 하나이므로 항상 최적화에 신경 써야 합니다. 이러한 이유로 기존의 데이터베이스 기술에서 JPA로 넘어가는 것을 주저하는 기업이나 개발자들을 주변에서 흔히 목격할 수 있습니다.
필자의 경우, 2017년 말부터 재직했던 회사에서 MyBatis
도입을 위해(JPA는 꿈도 못 꿈 ㄷㄷ) 당시 팀장(올드비 개발자로 주로 C언어 계열로 개발하시던 분)을 하루에 두 시간씩 일주일간 설득하였으나 ORM의 필요성 자체를 이해하지 못하는 바람에 '각자 쓰고 싶은 기술로 개발하자'로 결론이 났던 기억이 있습니다. 그만큼 데이터베이스를 다루는 것은 매우 민감한 부분이기 때문에 프레임워크에 가려진 부분을 직접 확인하지 못하는 상황에 대해 걱정하는 것을 충분히 이해할 수 있습니다. (이해와 별개로 그 회사에서는 빤쓰런 했습니다)
JPA와 관련된 포스팅을 결심한 이유가 바로 위와 같은 상황이 앞으로 벌어졌을 때 설득보다는 링크하나 딱 던져주기 위함입니다. (feat. 귀차니즘)
사실 저도 JPA를 가볍게만 사용해봤기 때문에 이 번 기회에 자세히 알고 싶은 마음도 있고, 후배 개발자들이 물어봤을 때 "잠시만.." 하면서 기존에 작성했던 소스를 뒤지지 않고 머리에서 바로 꺼내서 알려주고 싶은 마음도 있습니다.
다음은 JPA를 소개하기에 앞서 SQL을 직접 다룰 때 발생하는 문제점에 대해 포스팅하려고 합니다.
얼마나 꾸준히 공부하고 포스팅할 수 있을지 벌써부터 걱정이 앞서지만 올해 안에 부디 JPA 정리를 마칠 수 있기를!!
'JPA' 카테고리의 다른 글
객체와 데이터베이스의 체계와 한계 (0) | 2020.04.02 |
---|---|
SQL의 문제점 (0) | 2020.04.01 |
기본 키(Primary Key) 매핑 전략 (0) | 2019.10.01 |
JPA 데이터베이스 스키마 자동 생성 (0) | 2019.09.30 |
JPA 매핑 어노테이션 (@Entity, @Table) (0) | 2019.09.30 |
- Total
- Today
- Yesterday
- 스프링 부트
- 스프링 데이터 jpa
- 함께 자라기 후기
- @ManyToOne
- 스프링 부트 애플리케이션
- spring boot application
- 스프링 부트 회원 가입
- spring boot app
- JSON
- Linux
- leetcode
- spring boot jwt
- 스프링 부트 튜토리얼
- 클린 아키텍처
- proto3
- Spring Boot
- Spring Boot JPA
- QueryDSL
- 스프링부트
- 알고리즘
- Java
- intellij
- Spring Data JPA
- Spring Boot Tutorial
- Jackson
- 함께 자라기
- gRPC
- r
- JPA
- 헥사고날 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |