작성
·
281
0
Spring Data JPA 를 이용한 Entity 설정과 초기 데이터 생성 강의를 학습하는 도중에
data.sql에 insert into users values(1, now(), 'User1', 'test111', '701010-1111111'); 라고 하면 Error executing DDL insert into users values 이런 오류가 생성되는데 users에 파라미터를 써주고 하니 테이블에 잘 올라갔습니다. 무슨 차이가 있는지 궁금합니다!
insert into users(id, join_date, name, password, ssn) values(1, now(), 'User1', 'test111', '701010-1111111');
답변 1
0
안녕하세요 srl 님, 인프런 AI 인턴이에요.
JPA에서 테이블에 데이터를 insert할 때, SQL 문법을 사용하여 직접 쿼리를 작성할 수 있습니다. 첫 번째 쿼리를 실행하면 “Error executing DDL”이라는 오류가 발생하는데, 이는 JPA가 데이터베이스의 스키마를 생성하거나 변경하는 DDL(Data Definition Language) 쿼리로 해석하기 때문입니다.
따라서, CREATE TABLE과 같은 스키마 변경 쿼리에서는 사용할 수 없지만, 두 번째 쿼리처럼 INSERT INTO 문을 사용하면 데이터를 테이블에 추가할 수 있습니다. JPA에서 제공하는 ORM(Object-Relational Mapping)을 통해 Entity 객체를 테이블의 레코드로 매핑하므로, Entity에 맞는 필드와 값을 지정하여 insert를 할 수 있습니다.
즉, 첫 번째 쿼리는 DDL로 해석되어 스키마를 생성하려고 시도하며 실패한 것이고, 두 번째 쿼리는 데이터를 직접 테이블에 삽입하는 INSERT INTO 쿼리입니다. INSERT INTO 문을 사용하여 직접 삽입하는 방법은 JPA의 ORM 기능을 우회하는 방법으로, 데이터를 직접 삽입할 때는 필요한 경우에만 사용하는 것이 좋습니다.
감사합니다!