인프런 커뮤니티 질문&답변

토모시키님의 프로필 이미지
토모시키

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

Hello JPA - 애플리케이션 개발

JPQL과 SQL 차이가 잘 이해가 안갑니다.

작성

·

592

0

  1. JPQL은 엔티티 객체를 대상으로 쿼리한다고 하고

     

SQL은 DB 테이블을 대상으로 쿼리한다고 하시는데

이 말이 잘 이해가 안 갑니다.

 

Jpql을 통해 결국 SQL을 생성하는것도 이해했고 Jpql이 특정 DB에 종속적이지 않다는 말도 이해했습니다.

 

다만 검색 쿼리로서 Jpql의 용도를 하기 위해서는 Jpql도 결국 DB 테이블을 대상으로 쿼리를 하는게 아닌가요?

엔티티 객체를 대상으로 쿼리를 한다는 말이 잘 이해가 안갑니다.

 

  1. 엔티티 객체라는 말 자체가 혼동이 됩니다.

저는 평소 엔티티라는 말을 RDB 관점에서 다른것들과 구별을 가지는 DB에서의 클래스 정도로 이해하고 있습니다.

 

여기 JPA강의에서 엔티티는 @Entity 어노테이션을 통해 JPA에서 관리하고 RDB의 테이블과 1대1로 매칭되는 단위 정도로 이해하고 있습니다.

 

거기다가 객체라는 용어도 평소 프로그래밍에서 쓰던대로 클래스를 구현한 실체정도로 생각한다면, 여기 JPA강의에서 엔티티 객체라는 말은 한 번이라도 영속화를 시켜준 실체라고 이해해야 하나요? 정확한 정의가 궁금합니다.

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

토모시키님의 질문에 대해 명확한 정보를 제공하기 위해 검토한 결과, JPQL과 SQL의 차이점을 명확하게 설명하고, 엔티티 객체의 정의 및 사용 방법에 대해 설명하는 적절한 답변 관련 내용을 찾았습니다.

먼저, JPQL에 대한 질문에 대해, JPQL은 Java Persistence Query Language의 약자로, JPA(Java Persistence API)를 사용하여 작성되는 객체지향 쿼리 언어입니다. JPQL은 엔티티 객체를 대상으로 쿼리를 수행하지만, 최종적으로는 SQL로 변환되어 데이터베이스에 적용됩니다. JPQL이 엔티티 객체를 대상으로 쿼리를 한다는 의미는, JPQL이 데이터베이스의 테이블 구조와 직접적으로 대응하는 SQL과 달리, 애플리케이션의 엔티티 클래스와 그 속성을 기반으로 쿼리를 작성한다는 것을 의미합니다. 이 점에서 JPQL은 데이터베이스 구조가 아니라 애플리케이션 도메인 모델에 집중하기 때문에 보다 객체지향적인 접근을 가능하게 합니다.

관련하여 링크 하나를 참조해 드립니다:
- JPA 기술만 사용 할 때는 간단한 쿼리를 JPA가 SQL로 작성해 주고, 복잡한 쿼리가 필요한 경우 개발자가 JPQL을 따로 작성해서 처리합니다. - 이 답변에서는 JPA와 JPQL을 사용하는 이유와 장점, 그리고 SQL 대신 JPQL을 사용하는 것의 이점에 대해 설명하고 있습니다.

엔티티 객체에 대한 질문이 있는데, 엔티티(Entity)는 JPA에서 관리하는 데이터의 기본 단위로, 보통 데이터베이스의 테이블에 해당하는 데이터 구조를 자바 클래스로 매핑할 때 사용됩니다. @Entity 어노테이션이 붙은 클래스는 데이터베이스의 테이블과 연결될 클래스임을 의미하며, 이런 클래스의 인스턴스를 엔티티 객체라고 합니다. 즉, 엔티티 객체는 데이터베이스 내의 데이터를 자바 애플리케이션에서 사용할 수 있도록 자바 객체의 형태로 표현한 것입니다. 여기서 ‘한 번이라도 영속화를 시켜준 실체’라고 말씀하셨는데, 이는 엔티티 매니저에 의해 관리되는 상태, 즉 JPA 컨텍스트 내에 저장되어 있는 상태를 의미합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

토모시키님의 프로필 이미지
토모시키

작성한 질문수

질문하기