dev

more

[데이터 교환 형식] JSON의 직렬화와 역직렬화

JSON(JavaScript Object Notation)이란?JSON은 Javascript 객체 문법을 기반으로 구조화된 데이터 교환 형식입니다.Python, Javascript, Java 등 여러 언어에서 데이터 교환 형식으로 사용되며, 객체(Object) 형식 외에도 단순 배열, 문자열도 표현 가능합니다. Javascript의 객체(Object)Key-Value 형식으로 구성된 데이터 구조이다.const person = { name: "뚜룻", age: 29, isDeveloper: true}; Javascript VS JSONJSON은 Javascript 객체 리터럴 문법에서 파생된 텍스트 기반 데이터 포맷이고, Javascript는 제어 흐름과 로직을 실행하는 프로그래밍 언어이다. JSON..

Dev 2025.04.05 0

unique 대신 @uniqueConstraint를 사용하자

JPA에서 unique 속성을 사용하면 일어나는 일 이제까지 프로젝트를 진행하면서 어떤 컬럼의 값이 중복되는 것을 방지하기 위해 unique 속성을 즐겨 사용했었다. 하지만 이렇게 unique 속성을 사용했을 때 큰 단점이 하나 있다.JPA에서 해당 컬럼에 대한 unique 제약조건을 만들어주기는하는데, 대신 제약조건의 이름이 랜덤으로 정해진다는 것이다.아래 사진에서 빨간색으로 표시해둔 부분이 바로 제약조건의 이름이다.   제약조건 이름이 랜덤인게 뭐가 문제인가? 뭐가 문제인지 알고싶으면 직접 오류를 일으켜서 확인해보는게 확실하다.postman을 사용해서 일부러 중복되는 email을 저장해보았다. 콘솔창도 확인해보자.내용이 너무 길어서 일부만 캡쳐해왔다.아래 빨간박스로 표시한 부분이 바로 JPA에서 랜덤..

JPA 2025.01.02 1

Trouble Shooting

more

[Trouble shooting] 플러스 챕터 개선 과제 - 트러블 슈팅

25. 01. 20 기록Connection is read-only [문제 상황]게시글을 작성하려 하는데 아래와 같은 오류가 발생한다. 오류 전문은 다음과 같다.jakarta.servlet.ServletException: Request processing failed: org.springframework.orm.jpa.JpaSystemException: could not execute statement [Connection is read-only. Queries leading to data modification are not allowed] [insert into todos (contents,created_at,modified_at,title,user_id,weather) values (?,?,?,?,?..

프로젝트 2025.01.27 1

[KPT] 팀 기초 프로젝트 회고록 - '쉐어데이 뉴스피드 프로젝트'

프로젝트 흐름  https://github.com/sumin9926  Keep - 유지할 점▪️자유로운 소통 분위기팀원의 의견을 경청하고 반응해주는 태도. ▪️와이어프레임을 먼저 짜고 그 안에서 어떤 API가 필요한지 고민하고 ERD를 작성한 것명확한 와이어프레임이 있으니 막연하게 어떤 API가 필요하다고 이야기하는게 아니라, 진짜로 필요한 기능만 얘기하게 돼서 좋았다. (스코프가 무한정 확산 되는 것을 방지. 핵심기능과 부가기능을 구분하는데에 유용) ▪️API명세, 엔티티를 구체적으로정한 것변수명을 미리 정해둔 덕분에 각자가 만든 코드를 합칠 때 충돌이 적게 일어났다. 또한 각 기능에 대해 (요청을 어떻게 받을 것이고, 응답은 어떻게 할 것인지, 각 상황별 HTTP 응답은 무엇으로 할 것인지) 구체적으..

[Trouble shooting] JPA를 활용한 일정 관리 앱 만들기 - 트러블 슈팅

24. 12. 16 기록Spring Data JPA Auditing 활성화를 잊지 말자 [문제 상황]회원 가입 API를 만들고 postman을 실행했는데, 자동으로 생성되어야하는 "createdDate"값이 null로 나왔다.  [해결 시도]먼저 오타나 누락한 어노테이션은 없는지 살펴보았다.하지만 필요한 어노테이션도 다 달았고, Member 클래스에 상속도 잘 되어있다. Controller, Service, Repository 모두 살펴 보았지만 로직 문제는 아니었다.  [해결]검색을 통해 내가 Spring Data JPA의 Auditing 기능 활성화 단계를 거치지 않았다는 것을 알게 되었다. 😶이에 @EnableJpaAuditing 어노테이션을 @SpringBootApplication이 선언된 클래..

[Trouble shooting] 일정 관리 앱 만들기 - 트러블 슈팅

(24.12.04) 1. 한글 인코딩 문제로 인해 발생한 MySQL 다운로드 문제 [문제 상황]MySQL을 설치하는 과정 중 계속 같은 단계에서 오류가 발생했다.처음에는 버전 문제인가 싶었지만, 버전과 관계 없이 모종의 이유로 설치가 막혔다. 문제 화면을 캡쳐해두지는 못했지만 아래 빨간 박스로 표시해둔 단계를 넘어가지 못했다. 무엇이 문제인가 싶어서 튜터님과 함께 로그기록을 살펴보니 대략 어떤 파일을 찾을 수 없다는 문구가 나와있었다. [해결 시도]그 뒤로는 관리자 권한으로 설치 시도도 해보았고, 또 파일 설치 위치가 ProgramData로 되어있었는데, ProgramData는 숨겨진 파일이라 찾을 수 없다고 하는건가 싶어서 Program Files로 설치 경로를 바꿔보기도 했다. 하지만 무슨 짓을 해도..

[Trouble shooting] 키오스크 만들기 - 트러블슈팅

(24.11.22 작성)[Lv1,2]1. branch 커밋 실수• 본래 의도: 각 레벨마다 브렌치를 따로 만들어 사용하기. • 문제 발생: 1) kioskLv2 branch에 Lv1 디렉토리가 같이 push되어 섞임     (이유를 모르겠다.. git pull해서 그런가..? 아님 원래 이런가..? add도 '.' 안 쓰고 파일명 하나씩 지정해서 했는데..)  2) 브렌치 바꾸는걸 까먹는 바람에 Lv1 파일을  kioskLv2 branch에 잘못 push함 • 해결 시도:만약 잘못 푸쉬했다는 사실을 빨리 발견했더라면 git reset HEAD~1 명령어를 시도해보기라도 했을텐데, 내 실수를 뒤늦게 알아차리는 바람에 이 방법을 시도할 수 없었다.  잘못된 커밋을 되돌려 보려고 git log를 건드렸다가 커..