inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Orders Microservice 수정 - MariaDB

postgresql 연동 문의

해결된 질문

308

hibnos

작성한 질문수 4

0

Postgresql DB 사용시 auto_increment 옵션이 업어서

아래와 같이 작성하여 order등록 테스트 진행시 id 값이 null 이어서 에러가 나타납니다.

create table orders (

  id int primary key,

  user_id varchar(50) not null,

  product_id varchar(20) not null,

  order_id varchar(50) not null,

  qty int default 0,

  unit_price int default 0,

  total_price int default 0,

  created_at datetime default now()

)

테이블을 직접 생성하지 않고 소스의 jpa의 create 옵션을 사용하여 orders 테이블을 생성하고 상품을 등록하면 id 값이 자동으로 등록이 되는되 내부적으로 id값이 맵핑되는 로직이 따로 존재 하는 건가요?

 

테이블을 수동으로 생성 후 id 값을 맵핑시킬수 있는 로직이 따론 존재 하는 걸까요?

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

 

spring-boot jpa 아키텍처 spring-cloud kafka msa rabbitmq

답변 1

0

인프런 AI 인턴

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

hibnos님께서 Spring에서 Postgresql 데이터베이스와 연동하는 과정에서 auto_increment 옵션에 대한 문의를 주셨군요.

Postgresql에서는 auto_increment 옵션 대신 SERIAL 혹은 BIGSERIAL 데이터 타입을 사용하여 자동으로 증가하는 정수 값을 처리합니다. 질문하신 내용과 관련하여, 아래와 같이 테이블을 생성할 때 id 컬럼에 SERIAL 타입을 지정하면 자동으로 값이 증가하게 됩니다.

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    user_id VARCHAR(50) NOT NULL,
    product_id VARCHAR(20) NOT NULL,
    order_id VARCHAR(50) NOT NULL,
    qty INT DEFAULT 0,
    unit_price INT DEFAULT 0,
    total_price INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT NOW()
);

JPA를 사용하여 테이블을 생성하는 경우 @Id@GeneratedValue 어노테이션을 사용해주셨는데, 매핑된 엔티티의 id 필드에 GenerationType.IDENTITY 전략을 적용하면 데이터베이스가 제공하는 자동 증가 기능을 사용하여 id 값을 자동으로 할당 받을 수 있습니다. Postgresql의 SERIAL 타입과 이 설정은 호환되어 정상 작동합니다.

만약 데이터베이스에 테이블을 수동으로 생성했고, JPA를 사용해 자동으로 id 값을 생성하고 싶다면, @Id@GeneratedValue 어노테이션의 사용법을 그대로 유지하면서 테이블의 id 컬럼 타입을 SERIAL로 지정해주시면 됩니다.

JPA의 Entity 상태나 ID 생성 메커니즘에 대해서는 Spring Data JDBC 문서의 “ID Generation” 섹션에 자세한 정보가 있으니 참고하는 것도 도움이 될 것입니다.

혹시 다른 설정이나 더 궁금한 점이 있으시면 추가로 문의해주세요.

kafka 업데이트 강의 듣고 시포요

0

82

1

강의 교안

0

68

1

마이크로서비스간 통신 시, 인증 처리

0

76

1

api gateway 에서 인증 처리

0

62

1

섹션 19 질문드립니다

0

50

1

강의 자료 업데이트

0

80

1

부하분산 강의 섹션

0

55

1

강의자료는 어디에서?

0

68

1

강의 자료는 어디서 다운 받을 수 있나요?

0

108

1

전체 사용자 조회시 오류

0

56

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

107

2

학습 방향

0

93

2

카프카 커넥터 사용 목적 문의

0

84

2

kafka 강의

0

104

2

서비스 디스커버리 종류

0

85

2

강의 자료에 대해서 궁금해요

0

113

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

87

2

Kafka Source Connect 버전 에러

0

82

2

소스커넥터는 사용안한 거 맞죠?

0

79

2

강의자료 업데이트 문의

0

93

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

55

1

강의 업데이트 계획이 궁금합니다.

0

110

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

160

2

어떤 것이 업데이트 된 건가요?

0

160

2