legacy
-
[Spring] Http 상태 코드 204(No Content)legacy/Spring 2024. 3. 17. 00:15
Http 상태 코드 204 - No Content 클라이언트가 요청한 정보를 전달받고, 이를 정상적으로 처리한다. 보통이라면 요청 내용을 처리한 응답 값을 클라이언트에 반환한다. 그러나 Http Method로 Delete를 사용한 경우에는 그렇지 않다. 예를 들어, 사용자가 1번 게시물을 삭제 요청을 하면 서버는 해당 게시물을 삭제한다. 서버는 게시물을 삭제하고 어떤 값을 반환해야할까? 아무리 생각해도 반환할 정보가 없다.(= Http Response Body가 없다) 왜냐하면 요청 자원을 삭제했기 때문에 서버에 저장된 자원이 존재하지 않기 때문이다. 따라서 이러한 경우에는 응답 상태 코드 204를 사용하는 것이 맞다고 생각한다. 이에 맞춰 코드를 개선해보겠다. Service 기존 코드 기존 코드의 경..
-
[Spring] 엔티티 설계에 대한 고민, @Builder와 Validation 그리고 @Auditing 등legacy/Spring 2024. 2. 29. 01:22
빌더 클래스를 별도로 생성하지 않아도 빌더 패턴이 적용된다. 빌더 패턴을 사용하기 위해서는 반드시 생성자가 필요하다. 내가 처음에 설계했던 엔티티는 다음과 같다. 진짜 아무 생각 없이 @AllArgsConstructor, @NoArgsConstructor 그리고 @Builder 애너테이션을 사용했다. 그 결과 바로 피드백이 들어오게 되었다. @Entity @Getter @AllArgsConstructor @NoArgsConstructor @Builder public class Comment { @Id @Column(name = "comment_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotEmpty private..
-
[JPA] Auditing을 사용하여 시간을 저장하는 방법legacy/JPA 2024. 2. 29. 00:16
DB 컬럼에 누가, 언제 작업을 하였는지에 대한 기록을 반드시 남겨야 한다. 그렇지 않는다면 나중에 문제가 발생하였을 때 언제 문제가 발생하였는지 추적하는 게 매우 어렵게 된다. 그렇다면 엔티티를 다음과 같이 설계를 해야할 것 같다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Comment { private String content; // 작성 내용 private LocalDateTime createdDate; // 작성 시간 private LocalDateTime lastModifiedDate; // 수정 시간 } 댓글을 등록한 시간, 수정한 시간을 저장하는 필드가 있다. 이것은 좋은 방법이라고 할 수..
-
[JPA-Error] Table [DB명.Table명] doesn't exist 해결방법legacy/JPA 2024. 2. 21. 15:10
문제 발생 스프링부트에서 테이블을 생성하여 값을 저장하려고 하면 다음과 같은 오류가 발생했다. org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement [Table 'cicd_db.users' doesn't exist] [insert into users (age,username) values (?,?)]; SQL [insert into users (age,username) values (?,?)] 문제 원인 "Table 'cicd_db.users' doesn't exist" 이부분이 핵심인 듯하다. 나는 "Users" 테이블에 데이터를 삽입하려고 하는데 실제로는 "cicd_db.users" 테이블..
-
[Docker] 도커 볼륨legacy/Docker 2024. 2. 19. 15:47
Statelss 한 도커 컨테이너 도커 컨테이너는 상태를 저장하지 않는 Stateless 특징을 갖습니다. A 이미지로 컨테이너를 실행하다가 삭제하고 다시 컨테이너를 생성하면 이전의 변경사항이 모두 삭제됩니다. 왜냐하면 읽기 전용인 이미지를 컨테이너로 생성하면 R/W 컨테이너 레이어가 생성됩니다. 해당 컨테이너에서 변경사항은 R/W 컨테이너 레이어 위에 추가되기 때문에 컨테이너를 삭제할 시에 변경사항이 모두 삭제됩니다. 예를 들어 Nginx 이미지로 컨테이너를 실행하고, 해당 컨테이너에서 변경사항이 발생하였습니다. 컨테이너에서의 변경사항을 기존의 이미지에 변경사항을 적용하게 된다면 해당 이미지를 사용하는 모든 컨테이너에 변경사항을 적용해야 합니다. 이러한 방식은 stateful 한 방식으로 여러 개의 ..
-
[Docker] 도커 네트워크legacy/Docker 2024. 2. 18. 23:24
네트워크 기본을 기반으로 도커에서의 네트워크를 알아보겠습니다. Docker에서는 가상 네트워크 개념을 사용합니다. 가상 네트워크란 논리적으로 구성된 네트워크로, 하나의 물리적 네트워크 인터페이스를 기반으로 여러 개의 가상 네트워크를 생성할 수 있습니다. 가상 네트워크는 VLAN(Virtual LAN)과 같은 개념으로 사용될 수 있습니다. 도커도 가상 네트워크 개념을 사용합니다. 공인망으로부터 분리된 사설망 네트워크가 만들어지고, 사설망 내부에는 가상의 네트워크가 존재합니다. 네트워크 브릿지 위 사진을 보면 가상 네트워크 내부에 네트워크 브릿지가 존재합니다. 네트워크 브릿지란 도커 컨테이너 환경에서 네트워크를 관리하기 위한 기능입니다. 호스트와 컨테이너 간의 통신을 가능하게 하며, 컨테이너 간의 통신 또..