분류 전체보기 51

[데이터 교환 형식] xml

XML(Extensible Markup Language)이란?XML은 데이터의 구조와 의미를 사용자 정의 태그로 표현할 수 있는 마크업 언어입니다. 주로 시스템 간 데이터 저장 및 교환에 활용됩니다. Markup태그나 기호를 활용해 데이터 구조나 의미를 부여하는 것 [예시]• HTML, XML: 태그 중심() • Markdown: 기호(#, **, -) • LaTeX: 백슬래시 + 명령어 (/)  XML의 기본 구성XML은 프롤로그, 하나의 루트 요소, 그리고 그 안에 포함되는 여러 하위 요소들로 구성됩니다.  ...  프롤로그(Prolog)문서의 시작 부분에 위치하며, version, encoding 내용을 포함한다.• version: XML 버전• encoding: 문자..

Dev 2025.04.11

[데이터 교환 형식] 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

[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

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

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

[TIL] 스프링 인터셉터, 개인프로젝트 회고

TIL을 작성하면서 오늘 하루 무엇을 공부했는지 회고해보려한다.이렇게라도 정리해두지 않으면 제대로 끝낸게 없어보여서 '하루종일 뭐했니!' 하고 자책하게 되는 것 같다. 😣1개인 프로젝트 마무리 오늘은 개인프로젝트 마지막날이라 오전 내내 정신이 없었다. 원래는 Lv.6까지 구현하는게 목표였는데, 시간 부족으로 Lv.5 일부까지 구현하고 제출하였다. (점심도 거르고 마지막까지 최선을 다했지만 스스로 정한 기준이 너무 높은건지 썩하니 만족스럽지는 않다.) 그래도 테스트코드를 새로 배운 기념으로 꼭 한 번 적용해보고싶었는데, 쉽지는 않았지만 과제를 통해 사용해볼 수 있는 기회를 얻게 되어 좋았다.새로 배운 내용을 적용하는 것은 쉽지않지만, 정말 '백문이불여일타'라고 직접 써보는게 개념 이해에 정말 큰 도움이 ..

TIL/Spring 2025.01.07

[TIL] ENUM에 대해 알아보자

과제를 수행하던 중 문득 궁금해졌다..name()은 ENUM에 기본적으로 포함되어있는 메서드인가? 클릭해보니 .name()은 ENUM에 포함된 메서드라는 것을 확인할 수 있었다. 찾아보니 .name()외에도 생각보다 다양한 메서드가 있어서 이번 기회에 쭉 정리해보았다.ENUM의 기본제공 메서드 values( )▪️enum에 정의된 모든 상수를 배열로 반환한다.▪️예시⬇️public enum UserRole { ADMIN, USER}public static void main(String[] args) { for (UserRole role : UserRole.values()) { System.out.println(role); }}  valueOf(String str)▪️문자열로 ..

TIL/JAVA 2025.01.03

unique 대신 @uniqueConstraint를 사용하자

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

Dev/JPA 2025.01.02

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

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

[TIL] 데이터가 없으면 - 200? 404?

24. 12. 17 기록 요즘따라 시간이 빠르게 지나간다. 공부도 얼마 못한 것 같은데 '왜.. 벌써.. 저녁?' 아무래도 트러블 슈팅에 TIL에 작성해야할게 산더미이다 보니 더 그렇게 느껴지는 것 같다.API 하나 구현하다 궁금한게 생기면 찾아보고, 트러블 슈팅 쓰면서 자료 찾아보고...정신없이 궁금증을 해결하다보면 1시간, 2시간은 훌쩍 지나간다. 이것저것 찾아보느라 오늘도 과제 구현은 느림보 달팽이지만, 그래도 새로 알게된 것들이 많아서 정말 기쁘다! 새로 알게된 내용을 간략히 정리해본다. @RequiredArgsConstructor이 뭘까? @RequiredArgsConstructor는 롬복(Lombok) 라이브러리에서 제공하는 애노테이션다.클래스에 있는 final 필드와 @NonNull 애노테이..

[TIL] TIL은 TIL 답게

최근 TIL을 많이 쓰지 못했다.어느순간부터 양질의 내용을 정리해야한다는 강박이 생겼던 것 같다. 그래도 공부는 꾸준히 하고있다. 🙂‍↕️ 저번주부터 Spring, JPA 학습을 시작했는데, 양이 너무 방대해서 깜짝 놀랐다.하나하나 세세하게 공부하다가는 프로젝트를 시작도 못 할 것 같아서, 일단은 숲을 그려보는 느낌으로 훑어보았다.  아직은 좀 얕게 공부한 편이라 기술 블로그처럼 제대로 정리하기는 무리라고 판단했다.물론 기록에 의의를 두고 대충 쓸 수도 있다. 하지만 누군가가 읽을 수도 있는건데 기왕 쓰는거 제대로 된 정보를 전달하고싶달까. 아무튼, 제대로 정리 하려면 시간이 2시간 가까이 걸려서 부담스럽고, 그렇다고 대충 작성하는 것은 성격에 맞지 않는다.그래서 지식 공유를 목적으로하는 글은 좀 더 ..