본문 바로가기

공부 자료/Spring

(64)
[Spring+JPA] EAGER, LAZY 무슨 차이야? 매핑 시 사용하는 EAGER과 LAZY. 둘이 무슨 차인데? 지난 블로깅에서 1:1, 1:N, N:1 (단방향/양방향) 매핑에 대해서 알아 보았다. https://kcode-recording.tistory.com/345 [JPA] N:1, 1:N, 1:1, M:N 연관관계 매핑 (단방향/양방향 연관관계) 객체와 테이블 매핑 이해하기 JPA에서 테이블을 한 개만 사용하는 것이 아니라면 필요한 것은 연관관계 매핑이다. 객체 지향 프로그래밍에서는 객체간 상태를 쉽게 참조하고 호출해 상호작용이 kcode-recording.tistory.com 추가적으로 매핑 시 사용하는 fetchType에 대해서 이야기 하고자 하는데, fetchType이 무엇이고, 어떤것이 있으며, 어떻게 사용하는지 차근히 알아보자. Fetc..
[JPA] N:1, 1:N, 1:1, M:N 연관관계 매핑 (단방향/양방향 연관관계) 객체와 테이블 매핑 이해하기 JPA에서 테이블을 한 개만 사용하는 것이 아니라면 필요한 것은 연관관계 매핑이다. 객체 지향 프로그래밍에서는 객체간 상태를 쉽게 참조하고 호출해 상호작용이 가능하지만, RDBS에서는 외래 키와 조인을 사용해 관계를 표현한다. 따라서 이 두개의 간극이 존재하기에 이를 해결하기 위한 것이 바로 JPA이며, 연관관계 매핑인 것이다. 객체와 DB 간의 매핑을 통해 둘의 간격을 줄일 수 있으며, 객체 지향 관점에서 연관관계를 설정하고, DB 스키마에 맞게 매핑해 데이터를 효율적으로 관리할 수 있다. 그렇기에 우리는 연관관계 매핑을 사용하는 것이 중요하다. 연관관계를 매핑할 때에 생각해야 3가지 있는데, 아래와 같다. 1. 방향 : 단방향, 양방향 DB 테이블은 외래 키를 통해 양방향..
[Spring + JPA] JPA Entity 매핑 (feat. Entity 만들기) JPA를 이용한 Entity 만들기 Spring JPA에서는 구현체인 Hibernate가 옵션 설정을 통해 Entity 코드를 스캔해 스키마와 테이블을 자동으로 생성해주는데, 스키마와 테이블이 생성될 수 있도록 Entity를 만들어보고자 한다. * JPA와 Hibernate, Entity에 대한 기본적인 내용들은 아래 블로그를 참고하면 된다. https://kcode-recording.tistory.com/245 [05장.3] 1. JPA와 Hibernate, Entity JPA(Java Persistance API)란? : 자바에서 사용하는 표준 ORM : 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 JPA는 인터페이스이기 때문에 실제 사용을 위해 ORM 프레임워크가 필 kcode-..
[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를 의미..