Skip to content

Refactor : Change all String columns to TEXT type#46

Merged
KKangHHee merged 1 commit into
mainfrom
refactor/change-varchar-to-text
Oct 23, 2025
Merged

Refactor : Change all String columns to TEXT type#46
KKangHHee merged 1 commit into
mainfrom
refactor/change-varchar-to-text

Conversation

@hongjungwook1
Copy link
Copy Markdown
Collaborator

@hongjungwook1 hongjungwook1 commented Oct 23, 2025

연관 이슈

close #44


📁 작업 내용

전체 엔티티의 varChar타입 컬럼을 TEXT 타입으로 변경했습니다.


🖥 구현 결과 (선택)

문제

  • Excel 데이터 삽입 중 VARCHAR(255) 길이 제한 초과로 데이터 삽입 실패
  • 에러: ERROR: value too long for type character varying(255)
  • 데이터 중 일부 필드가 255자를 초과하는 경우 발생

해결 방법

1. DDL을 통한 데이터베이스 스키마 변경

먼저 VARCHAR 타입 컬럼들을 조회

SELECT 
    'ALTER TABLE ' || table_name || 
    ' ALTER COLUMN ' || column_name || 
    ' TYPE TEXT;' AS alter_statement
FROM information_schema.columns
WHERE table_schema = 'public'
  AND table_name IN ('place', 'activity', 'shopping', 'accommodation', 'restaurant', 
                     'cultural_facility', 'festival', 'tourist_spot', 'travel_course')
  AND data_type = 'character varying'
ORDER BY table_name, ordinal_position;

생성된 ALTER 문을 실행하여 모든 VARCHAR 컬럼을 TEXT로 변경

ALTER TABLE accommodation ALTER COLUMN accommodation_type TYPE TEXT;
ALTER TABLE activity ALTER COLUMN inquiry_and_guidance TYPE TEXT;
-- ... (총 9개 테이블의 모든 VARCHAR 컬럼)

2. JPA 엔티티 수정

모든 String 필드에 @Column(columnDefinition = "TEXT") 추가:

@Entity
public class CulturalFacility extends Place {
    
    @Column(columnDefinition = "TEXT")
    String capacity;
    
    @Column(columnDefinition = "TEXT")
    String operatingHours;
    
    // ... 모든 String 필드
}

3. VARCHAR로 되돌리지 않는 이유

  • PostgreSQL에서 TEXT와 VARCHAR의 성능 차이 없음: 내부적으로 동일한 varlena 구조로 저장
  • PostgreSQL 공식 문서 권장: "성능 차이가 없으므로 TEXT 사용 권장"
  • 유지보수 편의성: 향후 데이터 길이 제한 문제 예방

대상 엔티티 (총 9개):

  • Place (부모)
  • Activity, Shopping, Accommodation, Restaurant
  • CulturalFacility, Festival, TouristSpot, TravelCourse

✔ 리뷰 요구사항

  • 모든 엔티티의 String 필드에 @Column(columnDefinition = "TEXT")가 일관되게 적용되었는지 확인 부탁드립니다.
  • 데이터베이스 스키마와 JPA 엔티티가 동기화되었는지 확인 부탁드립니다.

📁 기타 사항

  • 서버 데이터베이스에 이미 DDL 작업 완료
  • PostgreSQL의 TEXT 타입 특성상 성능 이슈 없음
  • 향후 데이터 길이 관련 에러 발생 가능성 제거

@KKangHHee
Copy link
Copy Markdown
Collaborator

이제 안쓰는데 어떡하죠,,,,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants