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

이가영님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

JPA

Hibernate 질문 있습니다.

작성

·

91

0

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예

[질문 내용]

스크린샷 2024-09-05 153909.png

17 :13 에서 MemberServiceIntegrationTest 의 회원가입을 실행했을 때

김영한님은

insert into member(id,name) values (null,?) 라고 뜨시는데 저는

insert into member (name, id) values (?,default) 라고 뜹니다 member 과 values 둘 다 순서가 바뀐 것 같은데 어디를 봐야 고칠 수 있을까요..?

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이가영님

이 부분은 하이버네이트 구현체가 생성하는 쿼리여서 직접 변경하기는 어렵습니다.

하이버네이트 버전에 따라서 이런 부분이 가끔 조금씩 변경되는데요.

실제 실행 결과는 같기 때문에 이 부분은 무시하고 넘어가셔도 괜찮습니다.

감사합니다.

0

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

제공하신 정보에는 직접적으로 insert into member 쿼리의 순서와 관련된 내용은 없습니다.

하지만, Hibernate를 사용할 때 발생하는 이러한 현상은 대체로 매핑된 엔티티 클래스의 구성이나 Hibernate 설정에 따라 다를 수 있습니다. Member 엔티티 클래스에서 idname 필드의 선언 순서, @Id@GeneratedValue 애노테이션을 검토해 보세요. 일부 경우에는 Hibernate가 엔티티 클래스 내 필드의 선언 순서를 기반으로 쿼리를 생성하기 때문입니다.

또한, JPA 구현체인 Hibernate의 버전이나 사용하고 계신 데이터베이스의 유형(예: MySQL, H2 등)에 따라서도 SQL 생성 방식에 차이가 있을 수 있습니다. 이 경우, 프로젝트의 pom.xml 또는 build.gradle을 통해 사용하고 있는 Hibernate의 버전을 확인하고 필요하다면 데이터베이스와의 호환성을 고려하여 조정해 볼 수도 있습니다.

아울러, JPA나 Hibernate 관련 설정 파일(예: application.properties 또는 application.yaml)에서 SQL 출력 포맷을 설정하는 부분도 확인해 보시기 바랍니다. 예를 들어, SQL 로그를 보다 상세히 출력하도록 설정하면 실행되는 SQL 쿼리의 형태를 더 명확하게 확인할 수 있습니다.

질문하신 내용이 자주 하는 질문에 포함되어 있다고 하셨으나, 직접적인 해결 방법을 찾기 위해서는 위와 같은 점들을 확인해 보시는 것이 좋을 것 같습니다.