자바 ORM 표준 JPA 프로그래밍(책),
자바 ORM 표준 JPA 프로그래밍 - 기본편(인프런강의)
을 공부하면서 정리하는 글입니다.
JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 존재한다. 인터페이스이기 때문에 실제로는 Hibernate와 같이 JPA 구현체가 존재한다.
그렇다면 ORM이란 무엇인가?
ORM은 말그대로 객체(Object)와 관계형 데이터베이스(RDB)의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
앞서 말했듯, JPA는 자바 진영의 ORM 표준이다. 그리고 ORM은 객체와 관계형 DB를 매핑해준다. 그렇기 때문에 JPA는 객체와 RDB 사이의 패러다임 불일치 문제를 해결해주는 강력한 역할을 한다. ORM 중에서도 아직 성숙단계에 이르지 못한 경우 단순히 자동매핑만을 해결해주는 경우도 많은데, Hibernate는 패러다임 불일치 문제를 거의 완벽히 해결해주고 있을만큼 성숙도가 높은 ORM이자 JPA 구현 기술이다.
하나의 어플리케이션을 만들고 운영하기 위해서는 데이터 베이스가 반드시 필요하고, 데이터를 관리하기 위해서는 SQL을 사용해야 한다. 자바 애플리케이션은 JDBC API를 사용해서 SQL을 데이터베이스에 전달하게 되는데, 그러면 개발자가 직접 SQL을 작성한 후, JDBC API를 이용해서 SQL을 실행하고 또 매핑 작업까지 일일이 해주어야 한다. 단순히 조회 뿐 아니라 삽입, 수정, 삭제까지 CRUD 작업을 위해 너무 많은 SQL과 JDBC API를 코드로 작성해야 하는 것이다. 하지만 JPA를 사용하게 되면 자바의 컬렉션을 사용하듯 SQL 문을 작성하지 않아도 되고 또 어떤 쿼리가 나갈지 예측하는 것도 쉽다.
또 실무에서 중요한 한가지는 RDB는 기능이 같아도 벤더마다 그 사용법이 다른 경우가 많은데, JPA는 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 도와주기 때문에 로컬과 운영, DB 결정 전, 후를 크게 고민하지 않고 단순히 DBdialect 변경만으로 손쉽게 연결 DB를 바꿀 수 있다.
비즈니스 로직 변경 시 반드시 SQL의 수정이 동반되고, 이 과정에서 개발자도 사람이기 때문에 실수가 발생할 수 밖에 없다. 만일 한개라도 쿼리 수정을 빠트린다면 예상했던 비즈니스 로직과 다르게 동작하는 문제가 발생할 수 밖에 없을 뿐더러, 이것보다 더 큰 문제는 개발자 입장에서 엔티티에 대한 신뢰를 갖고 개발하는 것 자체가 불가능하게 되는 것이다.
즉 요약하자면,
이 문제점이 되겠다.
ORM은 객체지향 프로그래밍과 관계형 데이터베이스에 대한 이해가 탄탄할 때 더욱 쉽게 이해하고 실무에 적용할 만큼 활용할 수 있다. JPA에 대한 공부 뿐 아니라 Java와 SQL에 대한 공부도 꾸준히 열심히 하자!