Spring/Spring Study16 [SSE] SSE란? 위 영상을 바탕으로 정리한 글입니다! 궁금증새로고침을 하지 않아도 실시간으로 웹 페이지가 변하는 점 HTTP 프로토콜 요청이 있어야 응답을 보낼 수 있음 다양한 실시간 통신 방법웹 소켓양방향 통신을 위해 도입된 프로토콜HTTP 프로토콜이 아닌 ws 프로토콜 사용 polling주기적으로 요청을 보내 응답을 받음단점주기적으로 일어나는 것이기 때문에 '진짜' 실시간이 아님쓸데없는 요청이 계속 발생해 서버에 부하가 생김long polling응답이 도착하면 요청을 보내고 대기기존 polling 방식의 단점을 보완단점 : 요청과 응답이 여전히 1:1이라는 점에서 서버에 부하가 발생할 수 있음 Server Sent Event (SSE)한 번 연결한 후 지속적으로 응답을 받음장점서버에서 실시간으로 이벤트.. 2024. 7. 15. [Spring] UUID, PK로 사용하면 어떨까? 우리 팀은 Entity의 PK로 Long형의 id 대신 UUID로 생성한 32자리 String 값을 사용하고 있다.'숫자로 쉽게 노출되는 Long형의 id보다 보안성이 좋을 것이다.'라는 생각에 적용한 것인데, DB를 많이 차지한다는 단점이 있다. 이렇게 PK로 String 값을 쓰는 것이 많이 사용되는 방법일까? 라는 의문에 UUID부터 찾아보기로 했다. UUID란?Universally Unique Id Entifier16진수 32개로 되어있는 조합으로 구성되어 있고, 고유성과 보안, 분산 시스템에서의 유용성, 쉬운 생성, 데이터베이스 인덱싱, 일관성 유지 및 충돌 가능성이 낮다는 장점으로 유용하게 사용되고 있다. 사용 방법randomUUID() : 버전4의 랜덤한 UUID 생성toString(.. 2024. 7. 13. [HTTP] GET 메소드 사용 시 Body가 있으면 안 되는 이유?! 팀 프로젝트 진행 중, 똑같이 GET 메소드에 Body를 사용하는 상황에서 백엔드 api 테스트는 통과됐지만 프론트엔드 테스트 시 에러가 발생하는 상황이 생겼다.일단 GET 메소드 대신 POST 메소드로 변경하였고, 다시 테스트해보니 이번에는 프론트엔드 테스트도 성공하였다.같은 조건인데 백엔드 테스트는 성공하고, 프론트엔드 테스트는 실패하는 이유가 뭔지 궁금하여 찾아보았다. GET은 Body를 쓰면 안 되는걸까?HTTP GET 요청은 서버에 리소스를 검색하기 위해 설계되었다.GET 메소드라도 Body를 아예 받지 못하는 것은 아니다.서버로 데이터를 보내기 위해 사용하지 않는다.GET 메소드는 URL에 query parameters를 포함할 수 있지만, message body를 포함하는 것은 권장되지 않.. 2024. 7. 13. [Spring] fromEntity, toEntity, ofEntity? - DTO와 Entity 변환 팀 프로젝트를 진행하며 DTO와 Entity 변환을 어떻게 구현했는지 서로 공유하였다.어떤 분은 fromEntity, toEntity라는 함수를, 또 어떤 분은 ofEntity라는 함수를 정의하여 사용하셨다고 하였다.서로 맞추려다 보니 더 정확히 알아야겠다는 생각이 들어 찾아보았다. DTO, Entity를 변환하는 3가지 방법1. 생성자 혹은 빌더를 통해 변환하는 방법2. toXXX, fromXXX 메소드를 통해 변환하는 방법3. 별도 DTO, Entity Mapper를 통해 변환하는 방법 첫번째 방법인 생성자나 빌더를 통해 변환하는 방법은 약간의 문제가 생길 수도 있다고 한다. 가독성이 떨어지고, 레이어에서 휴먼 에러로 필드 매핑 실수가 일어나지 않도록 신경써야 하기 때문이다. Mapper는 DTO,.. 2024. 7. 4. [Spring] 연관 매핑을 지양하라? 개인 프로젝트에서 멀티 모듈을 도전했다가 난관에 봉착했다.A 모듈에 있는 엔티티와 B 모듈에 있는 엔티티가 연관이 필요하게 된 것이다.급하게 멘토님께 질문을 드렸고, 연관 매핑 대신 String으로 Key값만 받아와서 저장하는 방안을 추천해주셨다.연관 매핑을 안 해도 되는 방법이 있다는 것을 알게된 후로, 이게 자주 쓰이는 방법인지가 궁금해졌다. 그래서 검색하던 중 '연관 매핑을 지양하라'라는 글을 보게 되어 정리해둔다. 연관매핑을 왜 사용하는지Spring JPA에서는 @ManyToOne, @OneToMany와 같은 어노테이션을 가지고 연관관계를 확인할 수 있다. 이렇게 되면 직접 참조를 해 연관관계 객체를 바로 찾을 수 있게 되고, Join Query 없이 Join이 가능하며, 유지보수에 용이하다는 .. 2024. 7. 4. [Spring] @Data는 왜 지양해야 하는 것일까? 팀 프로젝트를 진행하며 Controller, Service 등에 공통적으로 사용할 어노테이션 목록을 정하면서 또 토의가 열렸다. @Data를 사용하는 쪽이 편하다는 의견과 @Data를 지양하자는 의견이 나왔기 때문이다. 그래서 찾아보는 '@Data를 지양해야 하는 이유'! @Data@ToString, @Getter, @Setter, @EqualsAndHashCode, @RequiredArgsConstructor을 한 번에 사용하는 강력한 어노테이션@ToString : toString 메소드 자동생성@Getter : 모든 필드의 getter 메소드 자동생성@Setter : 모든 필드의 setter 메소드 자동생성@EqualsAndHashCode : equals, hashCode 메소드 자동생성@Requ.. 2024. 7. 4. 이전 1 2 3 다음