새끼 개발자의 Life is egg

[JPA] DB 컬럼 타입이 지 혼자 바뀌었네...? (ddl-auto) 본문

개발's egg/Java

[JPA] DB 컬럼 타입이 지 혼자 바뀌었네...? (ddl-auto)

현z 2023. 11. 10. 15:24

최근 토이프로젝트의 어드민 페이지를 만들고 있는데 안해본걸 써봐야겠다 싶어 코프링에 JPA를 얹어보았다.

아니~ JPA가 그렇게~~ 편하다잖어~~~~~~~~~~~

 

코틀린도 처음이고 JPA도 기본 세팅만 해봤지 사용은 처음이었는데...

JPA는 뭔가 엄청 편하면서도 엄청 불편한 그런 느낌이 있었다. 아니 있다. MyBatis로 갈아타고싶다.

조금 손이 더 가더라도 그게 나을지도..............................

코틀린은 자바와 타입스크립트가 묘하게 섞인 느낌을 받았다.

익숙해지면 나쁘지 않을듯?

 

어쨌든 한창 작업하다가 확인차 기능을 실행했는데

 

'지정된 이름 및 인자 자료형과 일치하는 함수가 없습니다. 명시적 형변환자를 추가해야 할 수도 있습니다.'

ㅇ? 갑자기?

 

DB를 보니 timestamp 타입의 컬럼들이 전부 varchar 로 변경되어있었다.

 

흠...? ??

내.. 컬럼... 타입이... 뭐였더라...??? 엊그제 마신 술이 아직 안깼나?

아니... JPA가 엔티티를 변경하면 업데이트 쳐주는건 알겠는데... 설마 엔티티 필드 타입들까지 수정해버리냐고?

그렇다... 나는 객체를 만들때 timestamp 형식의 필드는 그냥 String 으로 적어두었었다.

DML까지는 오 신기해 했는데 DDL 까지 휘리릭 처리하는 JPA에게 난 놀라움을 감출 수 없었다.

누가 맘대로 바꾸래!

 

application.properties 파일을 살펴보니 내가 JPA 설정을 그렇게 해놨네

spring.jpa.hibernate.ddl-auto=update

 

기강이 헤이해졌구나

 

ddl-auto 는 5가지 속성을 지원한다

create: 기존 테이블 삭제 후 다시 생성... 오우

create-drop: create 속성 + 서버 내리면 테이블 삭제... 와우

update: 변경부분만 반영

validate: 엔티티와 테이블이 잘 매핑되었는지만 확인 < 요걸로 해야겠다

none: 아무것도 안함

 

아니 너무 편한 거 아닙니까?

JPA를 사용하려는 뉴비 여러분 이것좀 보십시오 아주 조심하시기 바랍니다.

create나 create-drop으로 해놓고 배포하는 상상을 해보시오

 

이제 나는 다시 고민에 빠진다

ddl-auto를 끄고 말것인지

mybatis로 갈아탈것인지................

Comments