Cute Running Puppy
본문 바로가기
728x90

개발일기89

JPA Query 사용하기 인스타 처럼 태그 값을 저장하고 Top3를 선정하는 로직을 짜기 위해서는 JPA 기본 메서드로 해결이 되지 않아서 Query문을 직접 작성하여 불러오는 방법을 사용해 보았다! Entity 우선 Tag를 저장하는 Entity는 이렇게 설계했다. id : 키값 post : 저장할 게시물 tag : 태그명 해당 태그를 한 게시글을 가져와야하니 JoinColumn으로 Post 객체를 연결했고 게시물에 태그가 여러개 등록되므로 @ManyToOne을 설정했다. @Getter @Entity @NoArgsConstructor public class Tag { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinC.. 2023. 3. 23.
CI/CD 파이프라인 CI (지속적 통합) local에서 github에 병합될 때 코드가 올바르게 동작하는지 검증하고 빌드 ( ex. dev → main) CD (지속적 배포) 프로젝트의 변경 사항을 가상 환경에 자동으로 배포 보통 CI와 CD를 함께 구축 CI만 하는 경우는 거의 없음 → CI / CD파이프라인을 통해 병합할 때 자동으로 빌드되어 배포 무중단 배포 배포의 과정에서 기존 서비스를 종료하고 새로운 서비스를 시작 → 그 사이 유저가 서비스를 이용할 수 없는 시간을 다운타임(downtime)이라 함 서비스가 중단되지 않은 상태(zero-downtime)로, 새로운 버전을 사용자들에게 배포하는 것을 무중단 배포라 함 다른 서버에 배포한 후 원래 서버를 제거하는 등 여러 방법이 있음 다른 서버에 배포를 해야하므로 최소.. 2023. 3. 22.
Cors 에러가 뜨는 이유와 해결 Cors 에러가 뜨는 이유와 해결! https://inpa.tistory.com/entry/WEB-📚-CORS-💯-정리-해결-방법-👏 (참고자료) 에러가 뜨는 이유 사실 출처가 다른 두 어플리케이션이 자유로이 소통할 수 있는 환경은 꽤 위험한 환경이다. 만일 제약이 없다면, 해커가 CSRF(Cross-Site Request Forgery)나 XSS(Cross-Site Scripting) 등의 방법을 이용해서 우리가 만든 어플리케이션에서 해커가 심어놓은 코드가 실행하여 개인 정보를 가로챌 수 있다. 그렇기 때문에 동일 출처가 아니면 차단!!! 해결 방법 서버에서 Access-Control-Allow-Origin헤더에 허용할 출처를 기재해서 클라이언트에 응답하면 되는 것이었다. 즉, 백엔드 개발자가 고쳐야될.. 2023. 3. 20.
userDetails 유저 정보 받아오기 비회원일 때 인증된 사용자에 대한 정보를 제공하기 위해 userDetails를상속받아 구현 중에 비회원은 어떻게 해야할까? 하는 의문이 생겼다. 전체 게시물이 보이는 화면에 좋아요 기능을 추가했는데 비회원과 회원 모두 볼 수 있는 화면인 것! 자신이 한 좋아요가 보이게 하기 위해 user정보를 userDetails를 상속 받은 UserDetailsImpl 클래스를 사용하여 가져왔는데 user가 null일 때 오류가 나는 것이다 ㅜㅜ @GetMapping("/post/{postId}") public ResponseEntity getPost( @PathVariable Long postId, @AuthenticationPrincipal UserDetailsImpl userDetails) { return ResponseEn.. 2023. 3. 19.
728x90