2024/10 9

SpringBoot - JPA / 일정관리프로그램(트러블 슈팅)

배경User(회원) 수정기능 개발 완료 후Postman 사용해서 테스트 중 상태코드 200으로 정상 작동 하였는데DB값이 수정되지 않는 현상 발견발단 및 전개1. entity, requestDto, responseDto, controller, service의 코드를 면밀하게 살펴보았으나 문제없음2. 디버깅 모드로 controller와 service에 Postman으로 요청한 값이 전달되는지 확인 -> 정상절정LLM 모델 중 perplexity URL : https://www.perplexity.ai/ 사용하여 해당 상황을 설명위와 같이 상황을 설명하였더니이렇게 답변해 주었고 천천히 읽어 내려가다 "트랜잭션 관리"에서 아차 싶었고바로 코드를 확인해 보니 @Transactional이 빠져있는 것을 확인수정 ..

DI와 IoC

의존성 주입(DI, Dependency Injection)과 IoC(제어의 역전, Inversion of Control)는 소프트웨어 개발에서 객체 간의 의존성을 관리하고, 더 유연하고 테스트하기 쉬운 구조를 만들기 위한 개념이다. 의존성이란 ?프로그램에서 객체(클래스)는 혼자 동작하지 않고 다른 객체를 사용해야 할 때가 많다.예를 들어, A라는 클래스가 B라는 클래스의 기능을 이용한다고 할 때, A는 B에 의존한다고 말할 수 있다. - 자동차는 혼자 움직일 수 없다. 엔진이 있어야 작동한다. 이때, 자곧ㅇ자는 엔진이 필요하므로 "엔진에 의존한다"고 말할 수 있다.- 만약 자동차가 엔진을 스스로 만든다면, 자동차는 엔진과 아주 강하게 연결된 상태라서 변경이 어렵다. class Engine { pub..

Dev/Spring 2024.10.11

오버로딩과 오버라이딩

오버로딩(Overloading)오버로딩은 같은 이름의 메서드를 다른 매개변수로 정의하는 것을 말한다.하나의 클래스 내에서 메서드 이름은 동일하지만, 매개변수의 개수나 타입을 다르게 하여 여러 메서드를 정의할 수 있다.오버로딩은 컴파일 시점에 결정된다. class Calculator { // 두 정수를 더하는 메서드 public int add(int a, int b) { return a + b; } // 세 정수를 더하는 메서드 (오버로딩) public int add(int a, int b, int c) { return a + b + c; } // 두 실수를 더하는 메서드 (오버로딩) public double add(doub..

Dev/Java 2024.10.10

@GeneratedValue

@GeneratedValue는 JPA(Java Persistence API)에서 사용하는 어노테이션으로DB의 기본 키(Primary Key)를 자동으로 생성해주는 역할을 한다.데이터를 저장할 때, 식별자(Primary Key)를 자동으로 만들어주는 방식에 따라다양한 옵션을 설정할 수 있다.@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; }위 코드에서 id 필드는 사용자마다 고유한 값이 자동으로 생성된다.사용자가 한 명 추가되면 DB가 알아서 새로운 id 값을 만든다. @GeneratedValue의 ..

Dev/Spring 2024.10.08

@Transactional

자바 스프링을 사용하다 보면, 데이터베이스와 상호작용하는 부분이 많다.예를 들어 사용자가 어떤 정보를 저장하거나 삭제할 때 DB에 데이터를 추가, 변경, 삭제하는 작업을 수행한다.이런 작업이 잘못되면 데이터의 일관성이 깨질 수 있다. 이때 등장하는 것이 바로 트랙잭션(Transactionl)이고,@Transactional이라는 특별한 어노테이션이 이와 관련이 있다.@Transactional 이란?트랜잭션은 데이터베이스에서 "모든 작업이 성공하거나, 아무작업도 하지 않는 것"을 보장해주는 개념이다.쉽게 말해 한번에 여러 작업이 일어나는 경우, 중간에 문제가 생기면 아예 처음부터아무것도 하지 않은 것처럼 만드는 것을 트랜잭션이라고 한다. 예) 친구에게 돈을 송금하는 상황을 생각해보자 두가지 작업이 있다.1...

Dev/Spring 2024.10.07

@RestController와 @Controller의 차이

@RestController- @Controller 와 @ResponseBody 가 결합된 애노테이션이다.- 주요 특징 :                   1. 메서드가 반환하는 객체는 자동으로 JSON이나 XML 같은 형태로 직렬화되어 HTTP 응답 본문에 포함된다.                   2. 주로 RESRful 웹 서비스에서 API를 만들 때 사용됩니다.@RestControllerpublic class MyRestController { @GetMapping("/greeting") public String greeting() { return "Hello, World!"; }}​위 메서드는 단순 문자열 "Hello, World!"를 반환하지만, 클라이언트는 이를 J..

Dev/Spring 2024.10.04

일정 관리 프로그램 (트러블 슈팅)

설계(API 명세서)더보기1. 배경처음으로 api 명세서를 작성해 보았다.json에 익숙하지 않아 요구사항에 제시된 예시를 보면서도이해가 가지 않아서 당황하였다. 2. 결말구글링으로 api명세 관련해서 많은 자료가 있어다른 사람이 작성한 내용을 토대로요구사항에 맞게 진행하려면 어떤 기능이 필요한지 먼저 정리하고Method 방식은 예시와 같게값을 넣어 생성하는 경우에는 POST값을 조회하는 경우 GET값을 수정하는 경우 PUT값을 삭제하는 경우 DELETE로 작성하고필요 값을 json형태로 작성하였다.  개발더보기배경요구사항 중 수정 및 삭제의 경우 해당 일정의 비밀번호를 확인하여 일치할 경우만 수정 및 삭제하기 위해기존에 비밀번호와 관계없이 수정 및 삭제하던 코드에 매개변수로 "String passwor..

상속 - 개념편

시작하기에 앞서더보기해당 주제에 대해서 계속 블로그를 작성하고 싶었다.하지만 정확하게 알지 못하는 내용을 작성하면 안 된다는 생각에 사로잡혀있다가다른 분의 블로그에서 "과거의 흔적을 보고 이불킥 한다는 건 내가 그만큼 성장했다는 증거다"라는 문장을 보고잘 몰라도 작성해 보기로 하였다. 상속은 아주 오래전부터 추상화, 다형성, 캡슐화와 같이 나에게 목에 걸린 가시 같은 느낌이었다개발을 본격적으로 해보지 않았고 주니어 개발자라는 말조차 부담스러운 나에게상속과 인터페이스를 몰라도 개발에 문제가 있던 적은 없다하지만 어느 강의든 자바의 기초에서 상속, 추상화, 다형성, 캡슐화는 무조건 다루고 있는 점을 미루어 보아객체지향을 다룸에 있어 필수적인 건 틀림없다이런 말도 들었다 상속, 추상화, 다형성, 캡슐화를 이해..

Dev/Java 2024.10.02

PUT과 PATCH

PUT MethodPUT 메서드는 리소스의 완전한 교체를 위해 사용된다.특징 : - 대상 리소스를 요청 페이로드로 완전히 대체한다. - 모든 필드의 값을 제공해야 한다. - 일부 필드만 전송할 경우, 나머지 필드는 null 또는 초기값으로 설정될 수 있다.사용시기 : - 리소스의 전체 상태를 업데이트할 때 - 새로운 리소스를 생성하거나 기존 리소스를 완전히 대체할 때 PATCH MethodPATCH 메서드는 리소스의 부분적인 수정을 위해 사용된다.특징 : - 리소스의 일부분만 수정한다. - 변경이 필요한 필드만 전송하면 된다. - 전송되지 않은 필드는 기존 값을 유지한다.사용시기 : - 리소스의 특정 필드만 업데이트할 때 - 전체 리소스 상태를 알 필요 없이 부분적인 수정만 필요할 때 특성PUTPATCH..

Dev/ETC 2024.10.01