전체 글 112

stackOverFlow Error

문제해결방안 so2zzy 프로젝트를 하면서 겪었던 순환참조문제이다. 해당 문제를 Discussion에 업로드하여 다른 팀원들이 빠르게 문제를 해결할 수 있었다. 역시 기록과 공유의 중요성..! 🌱🔗https://github.com/so2zy/so2zy_BE/discussions/23#discussion-5878755문제Infinite recursion (StackOverflowError) (through reference chain: com.aroom.domain.room.model.Room["accommodation"] ->com.aroom.domain.accommodation.model.Accommodation["roomList"] ->org.hibernate.collection.spi.Persist..

푸시 알림은 어덯게 구현할까 ? FCM & SSE

Real Time System⏰ 알림 기능FCM동작과정장점단점SSE동작과정장점단점 프로젝트를 진행하면서, 거래완료 와 정산완료 시, 푸시 알림을 구현해야했다. 푸시 알림을 어떻게 구현하면 좋을지 구글링해보다가, Real Time System에 대한 기초적인 공부와, 대표적인 기술인 FCM과 SSE에 대해 공부해보자. 🌱Real Time System“결과의 유효성이 얼마큼의 시간동안 유효한가” ⇒ deadline시간의 정밀성을 요구Hard Real-Time Systemdeadline 이전에 반드시 결과값을 돌려줘야하는 시스템deadline 이후에 결과값이 전달시, 유효하지 않는 결과값ex) 공장Soft Real-Time Systemdeadline이 지나더라도 결과값의 유효성이 떨어지긴 하나, 무효 x시간의..

패스트캠퍼스X야놀자: 백엔드 개발 부트캠프 - Toy#3 여행 여정을 기록, 관리하는 서비스

서비스 개요서비스 목적 및 목표서비스 설계패키지 구조요구사항 분석ERD서비스 기능기능설명입출력화면역할 분담팀 협업개인공부 정리이번 프로젝트를 통해 배운점Trouble Shooting 🚀1. NULL 값 유효성 체크2. QueryDSL 빌드 에러 프로젝트를 마무리하며 .. 🐣서비스 개요서비스 목적 및 목표목적여행 여정을 기록과 관리하는 SNS 서비스를 만든다.목표여행의 여정 정보를 기록하고 조회하는 [ToyProject 2단계] RESTful API 고도화한다.Spring Security 를 활용할 수 있도록, 사용자 테이블 추가 설계한다.Spring Security 기반 인증/인가 구현한다.MyBatis 또는 JPA를 활용하여 데이터베이스 연동한다.타인의 여행정보에 좋아요, 댓글 기능 구현한다.내가 ‘좋..

Attempt to recreate a file for type com.fc.toy_project3.global.common.QBaseTimeEntity

문제문제 해석해결 방안문제Attempt to recreate a file for type com.fc.toy_project3.global.common.QBaseTimeEntity문제 해석query dsl에서 생성 해주는 Q Object(객체) 관련된 문제해당 에러가 발생하는 경우는 Q Object(객체)를 생성해야 하는데 이미 폴더나 객체가 생성되어 있어서 발생해결 방안기존에 생성된 Q Object(객체)를 제거하고, out으로 생성되는 파일을 지우고 다시 실행하게 되면 정상적으로 동작IntelliJ의 우측 Gradle 탭에서 build > clean 클릭 🔗 참고 urlhttps://melonicedlatte.com/2023/02/06/225400.html Uploaded by N2T

No validator could be found for constraint 'jakarta.validation.constraints.NotEmpty' validating type 'java.lang.Long'.

문제 문제 해석javax.validation.constraints 의 NULL 관련 Annotation들해결 방안해결 전 CommentRequestDTO.java해결 후 CommentRequestDTO.java문제 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.NotEmpty' validating type 'java..

BaseTimeEntity.java란 ?

데이터를 논리삭제 하기 위해서 주로 공통된 BaseTimeEntity 클래스를 만들어서 사용한다. 공용으로 사용되는 BaseTimeEntity의 함수들과 칼럼들에 대해 공부하기 위해 작성한다. 🌱그전에, 미리 물리삭제와 논리삭제에 대해 공부하는 것을 추천한다. https://for-if.tistory.com/59 @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { @CreatedDate private LocalDateTime createdAt; @Column(insertable = false) @LastModifiedDate private LocalDateT..

Setter 지양, 그리고 DTO를 써야하는 이유

Entity Level에서 @Setter를 사용하면 안되는 이유1. 개발자의 의도를 알기 어렵다.2. 메소드 단의 개발로 책임 분산을 덜할 수 있다.그럼 어떻게 해결할 수 있을까?1. @Builder 사용하기2. DTO단에서 Getter와 Setter 사용하기 개발을 진행하다 보면, Entity레벨에 @Setter를 사용하여 데이터를 쉽게 바꾸거나, 지정해주고 싶을 때가 있었다. 하지만 대부분의 강의나 피드백에서 Setter 사용은 적극적으로 지양하고 있다. 처음에는 왜 어노테이션만 붙이면 되는건데 이 쉬운걸 포기해야할까 ? 라는 의문이 들었다. 하지만 여러번의 조사 끝에 왜 Setter을 사용하지 않고, 대신 DTO를 사용해야하는지 깨달을 수 있었다. 오늘은 그 이유에 대해서 작성해보도록 하겠다. 🌱 ..

물리삭제 & 논리삭제

물리삭제 & 논리삭제 의 정의물리삭제 (Hard Delete)논리삭제 (Soft Delete)왜 서비스에서는 주로 논리삭제제를 사용할까 ?논리삭제에 단점은 없을까?물리삭제와 논리삭제 개발 방법물리삭제논리삭제 이전에 개발을 할 때, 상항에 따라 UPDATE를 할때도, DELETE를 할때도 있었다. 그 차이는 논리삭제와 물리삭제인데 그 차이점을 공부하고 앞으로의 개발상황에 적용하도록 할 것이다. 🌱 물리삭제 & 논리삭제 의 정의물리삭제 (Hard Delete)SQL의 Delete 명령어를 사용하여 직접 데이터를 삭제하는 방법논리삭제 (Soft Delete)SQL의 Update 명령어를 사용하여 삭제 여부를 알 수 있는 칼럼에 데이터가 삭제되었다는 값을 넣어서 표현ex) deleted_at이 null이면, 삭..

@NotBlanck, @NotEmpty, @NotNull 차이점

🚗 @NotBlank, @NotEmpty, @NotNull 차이점javax.validation.constraints 패키지에 포함된 기능API에서 값을 입력받을 때, validation 체크를 위해 사용되는 annotaion이다. @NotNull ❌ Null을 허용하지 않는다. 🆗 “ “, “” 는 허용한다.ex) Integer, Long, CharSequence, Collection, Map, Array 타입에 사용 @NotEmpty❌ Null을 허용하지 않는다.❌ “”를 허용하지 않는다.🆗 “ “은 허용한다.ex) CharSequence, Collection, Map, Array 타입에 사용 @NotBlank❌ Null, “ “, “” 모두 다 허용하지 않는다.ex) String 타입만 사용 ✨그럼 ..

@Configuration이란 (w/ IoC, DI)

Spring을 공부할 때, Spring은 객체를 Bean으로 등록해서 이를 사용함을 알 수 있는데, 여기서 @Configuration 정보가 나오게 된다. Spring의 흐름을 제대로 파악하고자 이번엔 @Configuration을 포스팅한다. 🌱 @Configuration이란?객체 생성 방법들@Configuration의 역할IoC와 DI (w/ Spring Bean)“IoC를 구현하기 위해 DI가 필요하다.”@Configuration이란?Spring에서는 Bean을 수동으로 등록할 때, 설정 class 위에 @Configuration을 추가하고, @Bean을 사용해서 수동으로 Bean을 등록할 수 있다.@Configuration public class PasswordEncoderConfig { @Bean..