[기술면접 대비] JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요?

김엄지·2024년 4월 9일
0

기술면접

목록 보기
3/4

핵심 키워드 : ORM, SQL, 영속성, 더티 체킹, 객체 지향

JPA(Java Pesistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 관리하는 표준 ORM(Object-Relational Mapping)기술입니다.

  • 먼저 JPA가 필요한 경우에 대해서 말씀드리겠습니다.
    • 객체 지향 프로그래밍과 데이터베이스의 불일치(예를 들어, 상속, 다형성, 연관관계)를 해결하고 싶은 때 유용합니다.
    • 영속성 관리로 데이터를 더 효율적으로 관리할 수 있게 합니다. Entity의 생명주기를 관리하며, 영속성 컨텍스트를 통해 객체를 장기간 저장(영속화)하는 작업을 쉽게 할 수 있습니다.
    • 더티 체킹 기능으로 데이터의 변경 사항을 자동으로 감지하고 데이터베이스에 반영하애 할 때 유용합니다.
    • 표준화된 API를 사용하여 데이터베이스 코드를 작성하고 싶을 때 유용합니다.
    • 반복적인 CRUD 작업을 간소화하고자 할 때, 복잡한 SQL 쿼리 없이도 이러한 작업을 쉽게 처리할 수 있습니다.
  • 다음으로 JPA가 필요하지 않은 경우에 대해서 말씀드리겠습니다.
    • 단순한 쿼리 실행이 더 효율적인 경우 JPA를 사용하는 것이 오히려 성능 저하를 일으킬 수 있습니다.

    • 고성능을 요구하고, SQL 쿼리의 최적화가 중요한 어플래케이션에서는 JPA보다 순수 SQL, 다른 데이터베이스 접근 기술을 사용하는 것이 더 적합할 수 있습니다.

      요약하면, JPA는 복잡한 데이터베이스 상호작용과 객제 지향 설계에 적합하며, 데이터 베이스 독립성을 제공합니다. 간단한 애플리케이션에서는 JPA를 사용하지 않고 다른 데이터 엑세스 방법을 고려할 수 있습니다.


✅ JPA(Java Pesistence API)

객체 관계 매핑(ORM)을 위한 자바 API로, 데이터베이스 작업을 객체 지향적으로 처리할 수 있게 도와줍니다.

Untitled

  • JPA는 애플리케이션과 JDBC 사이에서 동작되고 있습니다.
  • JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해줍니다.
  • 또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리할 수 있습니다.
  • 하이버네이트(Hibernate)란?
    • JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 중 사실상 표준하이버네이트입니다.
    • 스프링 부트에서는 기본적으로 ‘하이버네이트’ 구현체를 사용 중입니다.

JPA가 필요한 경우

  • 복잡한 조인, 쿼리 대신 객체 중심 개발 JPA를 사용하면 복잡한 SQL 쿼리 대신 객체와 그 관계를 중심으로 개발할 수 있어 개발자가 객체 지향 프로그래밍에 더 집중할 수 있습니다.
  • 데이터 베이스 독립성 JPA는 데이터베이스에 독립적이기 때문에, 다양한 데이터베이스 제품에 대한 코드 변경 없이 호환성을 유지할 수 있습니다.
  • CRUD 작업의 간소화 JPA를 사용하면 반복적인 Create, Read, Update, Delete 작업을 쉽게 처리할 수 있습니다. JPA가 제공하는 메서드를 사용하면 기본적인 데이터베이스 연산을 간단한 코드로 처리할 수 있습니다.
  • 보일러플레이트 코드 감소 JPA는 반복적으로 사용되는 많은 데이터베이스 관련 코드를 줄여줍니다. 이를 통해 개발자는 비즈니스 로직에 더 많은 시간을 할애할 수 있습니다.
    • 보일러플레이트(Boilerplate) 코드란? 개발 과정에서 반복적으로 사용되는 코드를 의미한다. 프로그램의 실제 로직이나 기능과는 직접적인 관련이 없지만, 프로그래밍 언어나 프레임워크, 라이브러리의 요구 사항을 충족하기 위해 필요한 표준 코드 조각이나 설정들이다. 보일러플레이트 코드는 프로젝트의 여러 부분에서 거의 변경 없이 반복적으로 사용되므로, 이를 최소화하는 것이 좋다. 그 이유로는 코드의 양을 줄이고, 유지 보수를 용이하게 하며, 가독성을 높이기 위함이다. 예를 들어, 자바에서 데이터베이스에 접근하는 전통적인 JDBC 코드 작성 시, 커넥션을 생성하고, SQL 쿼리를 실행하고, 결과를 처리하고, 자원을 해제하는 과정은 대부분의 데이터베이스 연동 코드에서 반복적으로 나타난다. 이러한 과정들이 보일러플레이트 코드의 예이다.

JPA가 필요하지 않은 경우

  • 단순한 프로젝트
    • 프로젝트의 규모가 작고 데이터베이스 작업이 매우 제한적인 경우, JPA를 사용하는 것은 오버 엔지니어링일 수 있습니다. 직접 JDBC 코드를 작성하는 것이 더 간결할 수 있습니다.
  • 최적화가 중요한 경우
    • JPA는 추상화의 이점을 제공하지만, 이는 때로 세밀한 최적화를 방해할 수 있습니다. 특히 읽기 전용 작업이 많은 고성능 애플리케이션이나 복잡한 쿼리 최적화가 필요한 경우, SQL 쿼리를 직접 최적화할 수 있는 기술을 사용하는 것이 더 적합할 수 있습니다.

마무리

JPA는 많은 이점을 제공하지만, 프로젝트의 특성과 요구 사항에 따라 그 적합성이 달라질 수 있다.


참고자료

  • ChatGPT
profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글