스마트웹앱콘텐츠전문가/JAVA

PostgreSQL 타입을 Java로 변환하는 법: 필수 매핑 목록

9D4U 2025. 2. 18. 12:38
728x90
반응형

PostgreSQL 타입별 Java 타입 매칭 가이드

Java와 PostgreSQL은 데이터베이스와 애플리케이션 간의 데이터 변환을 효율적으로 수행할 수 있도록 각기 다른 데이터 타입을 제공합니다. Java에서 PostgreSQL 데이터 타입을 올바르게 매핑하는 것은 중요한 부분입니다. 잘못된 매핑은 데이터의 손실이나 오류를 초래할 수 있습니다. 이번 글에서는 PostgreSQL의 주요 데이터 타입과 이에 대응하는 Java 타입을 소개하고, 각 타입을 어떻게 매칭할 수 있는지 설명하겠습니다.

 

 

 

 

 

1. 정수 타입 (Integer Types)

  • PostgreSQL int2 (Smallint)Java Short
    • PostgreSQL의 int2는 2바이트 크기의 부호 있는 정수입니다. 이에 대응하는 Java 타입은 Short입니다. Short는 -32,768에서 32,767까지의 범위를 지원합니다.
// smallInt (int2)
@NotNull
@ColumnDefault("0")
@Column(name = "parameter_length", nullable = false)
private Short parameterLength;

 

 

  • PostgreSQL int4 (Integer)Java Integer
    • int4는 4바이트 크기의 정수 타입으로, Java의 Integer와 일치합니다. Integer는 -2,147,483,648에서 2,147,483,647까지의 범위를 처리할 수 있습니다.
// INTEGER(int4)
@Id
@NotNull
@ColumnDefault("0")
@Column(name = "testNo", nullable = false)
private Integer testNo;

 

 

  • PostgreSQL int8 (Bigint)Java Long
    • int8는 8바이트 크기의 정수로, Java의 Long과 매칭됩니다. Long은 -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지의 값을 지원합니다.

 


 

2. 실수 타입 (Floating Point Types)

  • PostgreSQL float4 (Real)Java Float
    • float4는 4바이트 크기의 부동소수점 숫자 타입입니다. 이에 대응하는 Java 타입은 Float입니다. Float는 대략 7자리의 십진수 정확도를 지원합니다.
  • PostgreSQL float8 (Double Precision)Java Double
    • float8은 8바이트 크기의 부동소수점 숫자 타입으로, Java의 Double과 매칭됩니다. Double은 대략 15자리의 십진수 정확도를 제공합니다.

 

 

 

반응형

 

 


 

 

3. 문자열 타입 (String Types)

  • PostgreSQL varchar / textJava String
    • PostgreSQL의 varchar나 text는 가변 길이 문자열 타입입니다. Java에서는 String 타입으로 매핑됩니다. String은 가변 길이의 유니코드 문자열을 처리할 수 있습니다.
// varchar(200)
@Size(max = 200)
@ColumnDefault("''")
@Column(name = "content", length = 200)
private String content;

 

 

 

  • PostgreSQL charJava String
    • 고정 길이 문자열 타입인 char는 Java의 String 타입으로 매핑됩니다. String은 고정 길이든 가변 길이든 처리할 수 있습니다.

 


 

4. 날짜 및 시간 타입 (Date and Time Types)

  • PostgreSQL dateJava LocalDate
    • PostgreSQL의 date는 날짜만 저장하는 타입입니다. 이에 대응하는 Java 타입은 LocalDate입니다. LocalDate는 날짜를 표현하는 클래스입니다.
  • PostgreSQL timeJava LocalTime
    • time은 시간을 나타내는 타입으로, Java의 LocalTime이 적합합니다. LocalTime은 시간을 표현하는 클래스로, 시간대는 포함되지 않습니다.
  • PostgreSQL timestampJava LocalDateTime
    • timestamp는 날짜와 시간 정보를 모두 포함하는 타입으로, Java의 LocalDateTime과 매칭됩니다. LocalDateTime은 날짜와 시간을 표현하는 클래스입니다.
  • PostgreSQL timestamptz (Timestamp with Time Zone)Java ZonedDateTime
    • timestamptz는 시간대 정보를 포함하는 타임스탬프 타입입니다. 이에 대응하는 Java 타입은 ZonedDateTime입니다. ZonedDateTime은 시간대 정보를 포함한 날짜와 시간 정보를 처리할 수 있습니다.

 

 

 

 


 

5. 기타 숫자 타입 (Numeric Types)

  • PostgreSQL numeric(p,s)Java BigDecimal
    • numeric(p,s)는 고정된 정밀도와 스케일을 갖는 숫자 타입입니다. Java에서는 BigDecimal을 사용하여 정확한 소수 계산을 처리할 수 있습니다. 예를 들어, numeric(22)는 22자리 숫자 값을 처리할 수 있으며, BigDecimal이 가장 적합한 매핑 타입입니다.
// numeric(22)
@NotNull
@ColumnDefault("0")
@Column(name = log_seq_no", precision = 22, scale = 0)
private BigDecimal logSeqNo;

 

 


 

6. 불리언 타입 (Boolean Types)

  • PostgreSQL booleanJava Boolean
    • boolean은 논리값(True/False)을 저장하는 타입입니다. Java의 Boolean 타입으로 매핑됩니다. Boolean은 true, false, null을 값으로 가질 수 있습니다.

 


 

7. 바이너리 데이터 타입 (Binary Data Types)

  • PostgreSQL byteaJava byte[]
    • bytea는 바이너리 데이터를 저장하는 타입으로, Java의 byte[] 타입과 매핑됩니다. 이는 파일이나 이미지와 같은 바이너리 데이터를 처리하는 데 사용됩니다.

 


 

 

 

 

 

PostgreSQL과 Java는 데이터 타입에 있어 중요한 차이점이 있지만, 적절한 매핑을 통해 두 시스템 간의 데이터 변환을 원활하게 할 수 있습니다. Java에서 BigDecimal, LocalDateTime, ZonedDateTime 등과 같은 타입을 사용하여 PostgreSQL의 정밀한 숫자나 날짜/시간 데이터를 정확하게 처리할 수 있습니다. 이를 통해 데이터 무결성과 일관성을 유지하면서 애플리케이션을 개발할 수 있습니다.

이 가이드를 참고하여 PostgreSQL의 각 데이터 타입에 맞는 적절한 Java 타입을 사용하면, 데이터베이스와 애플리케이션 간의 원활한 데이터 처리 및 성능을 보장할 수 있습니다.

728x90