본문 바로가기

전체 글

(404)
[Spring] @AllArgsConstructor, @NoArgsConstructor를 지양하자? 왜 생성자 애너테이션들을 지양해야 할까? @AllArgsConstructor, @NoArgsConstructor 애너테이션을 지양해야 하는걸까? 이유를 알기 전 각각의 애너테이션이 무엇인지에 대해 먼저 알아보고자 한다. @AllArgsConstructor, @NoArgsConstructor 애너테이션이란? @NoArgsConstructor : 파라미터가 없는 디폴트 생성자를 생성 @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성 class Member{ private String name; private Integer age; private String email; public Member(){} // 기본 생성자 public Member(String name){ th..
[Spring] @CreatedDate&@LastModifiedDate vs @CreationTimeStamp&@UpdateTimeStamp, 둘은 뭐가 다를까? 생성 날짜를 알아서 생성/수정해주는 애너테이션 @CreatedDate & @LastModifiedDate / @CreationTimeStamp & @UpdateTimeStamp 게시글의 생성 날짜를 추가해주기 위해 알아보던 중 두가지 애너테이션이 많이 보였다. 오늘은 두 애너테이션의 차이와 사용방법에 대해서 알아보고자 한다. 오늘도 결론부터 이야기 해보자면, 사용 방법에 차이가 존재할 뿐 기능적인 부분에서 크게 차이나는 것은 아니다. public class Member{ ... 4개의 칼럼 외 모든 것 생략 @CreatedDate private LocalDateTime createdDate; @LastModifiedDate private LocalDateTime lastModifiedDate; @Crea..
[Spring JPA] 페이징 Pageable, Page, Slice / 페이지 나누기 많은 글을 여러 페이지로 나누어 볼 수 있는 페이지 처리 Spring Data JPA에서는 페이징 처리가 존재하는데, 페이징이 무엇인지, 어떻게 사용할 수 있는지 살펴보고자 한다. 페이징(Paging)이란? 검색된 결과 혹은 대용량의 데이터를 페이지 단위로 데이터를 분할하여 가져오는 기능을 말한다. 그럼 페이징 처리를 하기 위해 기본적으로 알아야 하는 것, 알면 좋은 것에 대해 이야기 해보고 사용법을 알아보고자 한다. Pageable이란? Spring Data에서 페이징 및 정렬을 처리하기 위한 인터페이스로, 데이터를 한 페이지 단위로 가져오고 정렬하는 작업에 필요한 정보들(페이지 번호, 페이지 크기, 정렬 방법)을 담고 있는데, Pageable 객체를 사용해 Repository에 페이징과 정렬 조건을 ..
[Spring] Getter/Setter를 지양하자? 편리해 보이는 @Getter / @Setter를 지양해야 한다? 지양을 해야하는 이유를 알기 전 @Getter / @Setter 애너테이션에 대해 먼저 알고가자! @Getter / @Setter 애너테이션이란? 자바를 공부하면서 객체 지향 프로그래밍에서 객체의 데이터는 객체의 외부에서 직접적으로 접근하는 것을 막는다는 캡슐화의 원칙을 기억하고 있을 것이다. 이를 위해 접근 제어자를 private으로 두고, getter/setter를 사용하라고 배웠다. @Getter/@Setter 애너테이션은 이(getter/setter)를 선언하는 것을 줄여주는 애너테이션이다. 즉, 아래와 같이 사용이 가능하다. [애너테이션 사용 전 Member.java] public class Member{ private String..
[Spring] CORS란? (CORS에 대해 알고 설정하기) 접근 시 발생하는 보안 이슈 CORS CORS란? CORS(Cross-Origin Resource Shargin)은 웹 애플리케이션에서 다른 도메인의 리소스에 접근할 때 발생하는 보안 이슈를 해결하기 위한 표준 방법이다. 즉, 정책을 위반해도 CORS 정책에 따른다면 다른 출처의 리소스라도 허용하게 해주는 것이다. CORS 에러는 대부분 한 번씩 겪게 되는 일인데 이는 왜 생기는 것일까? 그 이유는 바로 HTTP 요청에 대해서 어떤 요청을 하는지에 따라 웹 브라우저마다 각기 다른 특징을 가지기 때문이다. 다른 출처와 같은 출처의 구분 기준은? 이를 구분하기 전에 '출처'가 무엇인지 먼저 알아야 한다. 출처(Origin)란? 출처는 우리가 작성하는 URL 중 Protocol + host + port를 의미..
[React] Axios를 이용한 Spring boot 연결 리액트와 스프링 사이에 데이터를 주고 받을 수 있는 Axios 이전에 JSP를 이용한 프로젝트를 진행 할 때에는 Ajax를 이용해서 서버와 데이터를 주고받았는데, 이번에는 Axios를 이용할 예정이다. AXIOS에 대한 설명은 아래 블로깅을 참고하면 되며, 오늘의 블로깅은 AXIOS에 대한 예시를 보여준다고 생각하면 된다. 즉, Spring과의 연결이 크게 설정할 것이 있는 것이 아닌 AXIOS에서 설정하는 url과 Spring에서 설정하는 Controller의 url이 맞도록 매핑을 시켜주면 되는 것이다. 물론 이 전에 설정해야 할 것이 있는데 그것은 바로 CORS이다. 서버에서 리액트와 연결하기 위해서 주소와 메서드에 대한 설정을 해줘야 하는데, 이는 아래 블로깅을 참고하길 바란다. - AXIOS -..
[Spring Boot] ResponseEntity란? 응답 데이터를 포함하는 ResponseEntity ResponseEntity를 알아보기 이전에, 이것이 어디서부터 온 것인지를 먼저 알아볼 예정이다. ResponseEntity는 어디서 왔을까? ReponseEntity는 Spring Framework에서 제공하는 HttpEntity 클래스 (Http 요청과 응답에 해당하는 HttpHeader, HttpBody를 포함)를 상속받아 구현한 클래스가 바로 RequestEntity, ResponseEntity이다. public class HttpEntity { private final HttpHeaders headers; @Nullable private final T body; } public class RequestEntity extends HttpEntit..
[React] Node JS를 위한 비동기 통신 AXIOS Node JS를 위한 비동기 통신 라이브러리 AXIOS Axios란? : Promise 기반 HTTP 클라이언트 라이브러리(비동기 통신 라이브러리) : Javascript, Node JS 환경에서 요청 응답 처리에 사용 : 내장 클래스가 존재하지 않아 XML Request 객체를 이용하거나 다른 HTTP Client를 사용 * 백엔드/프론트엔드 통신을 쉽게 하기 위해 Ajax를 더불어 사용하기도 함 https://kcode-recording.tistory.com/334 [JavaScript] JS의 라이브러리 AJAX 비동기식 자바스크립트 라이브러리인 AJAX(Asysnchronous Javascript And XML) JSP Servlet에서는 form을 이용해 action, method를 설정해 서버..