Spring/Spring Boot 63

[Spring] JPA 즉시 로딩과 지연 로딩

JPA는 데이터를 조회할 때, `FetchType` 으로 `즉시로딩(Eager)` 과 `지연로딩(Lazy)`가 있습니다. 참고로 JPA FetcyType의 default값은 @xxToOne에서는 EAGER, @xxToMany에서는 LAZY입니다. Feth Type이란 이 FetchType이란, JPA가 하나의 Entity를 조회할 때, 연관관계에있는 객체들을 어떻게 가져올 것이냐를 나타내는 설정값 입니다. JPA는 ORM기술로, 사용자가 직접 쿼리를 생성하지 않고, JPA에서 JPQL을 이용하여 쿼리문을 생성하기 때문에, 객체와 필드를 보고 쿼리를 생성합니다. 따라서 다른 객체와 연관관계 매핑이 되어있으면 그 객체들 까지 조회하게 되는데, 이때 이 객체를 어떻게 불러올 것인가를 설정할 수 있습니다. 즉시..

Spring/Spring Boot 2022.03.23

getter setter를 사용하는 이유

👏🏻 놉! 왠만하면 사용하지 않는게 좋습니다. 게터는 편의성을 위해 어쩔수 없이 사용하는 부분이 있지만 Setter는 되도록 지양해야한다. (2022.07 수정..ㅎ) 면접 스터디를 하면서 getter setter를 하는 이유에 대해 공부를 하는데 새로 알게된 피드백을 받아서 이게 좀 헷갈려서 포스팅을 남기면서 공부를 해보고자 한다. [공부 목적] 1. getter/ setter를 사용하는 이유는 데이터 무결성을 위해서 이다. (알고있던 것) -> setter는 데이터 무결성을 해칠수도 있다(?) (새롭게 알게된 것) -> 따라서 builder 패턴이나 solid 개방패쇄 원칙에 대해 공부해보고자 한다. 1. 처음 공부한 것 Getter Setter를 사용하는 이유 핵심답변 객체의 무결성을 보장하기 위해..

Spring/Spring Boot 2022.02.24

[Spring] AOP란 - (AOP, Spring AOP, AOP 어노테이션)

목차 AOP란 AOP의 주요 개념 Spring AOP AOP 적용 시퀸스 다이어그램 Spring AOP 어노테이션 Spring AOP 코드 예시 AOP란 Aspect Oriented Programming - 관점 지향 프로그래밍이라고 불리는 AOP 관점 지향이란, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 각각 모듈화하는 프로그래밍 기법을 의미합니다. 따라서 AOP는 핵심기능과 부가기능을 나누어서 설계, 구현하는 것을 말합니다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미입니다. 이떄, 소스코드상에서 다른 부분에 계속 반복해서 사용되는 코드들이 존재할 수 있는데, 이것을 흩어진 관심사(Crossing Concerns)라..

Spring/Spring Boot 2022.01.18

[Spring] JSON 파일 DTO로 받아오기 - ObjectMapper

이번 포스팅은, JSON 파일을, JAVA DTO 클래스로 받아오는 방법을 기록하기로했다. [목차] 1. JSON to DTO Array 2. Object Mapper 1. JSON to DTO Array 저번 게시물(https://thalals.tistory.com/266)에서 외부 API에서 JSON 파일을 ResponseEntity 파일로 받아왔는데, 이 Object 데이터를 DTO 클래스로 변환해서 저장한다음, 내 입맛데로 변경하여 사용할 수 있다. 외부 API 데이터 받아오기 public ResponseEntity getData(String url ) { //Spring restTemplate RestTemplate restTemplate = new RestTemplate(); HttpHeade..

Spring/Spring Boot 2022.01.18

ResponseEntity란 - 개념, 구조, 사용법, 사용하는 이유

이거 옜날에 적은건데,, 꾸준히 블로그로 유입되시는 분들이 계셔서 부끄러운 마음에 내용을 조금 더 추가해 보았습니다..ㅎㅎ 앞으로도 계속 변경되거나, 알게된 내용 추가할 예정이고, 틀린부분이나 부족한 부분이 있다면 알려주시면 감사하겠습니다~ ResponseEntity란 ResponseEntity란, httpentity를 상속받는, 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스이다. ResponseEntity에는 사용자의 HttpRequest에 대한 응답 데이터가 포함된다. ✨ 또한, HTTP 아케텍쳐 형태에 맞게 Response를 보내주는 것에도 의미가 있습니다. 에러 코드와 같은 HTTP상태 코드를 전송하고 싶은 데이터와 함께 전송할 수 있기 때문에 좀 더 세밀한 제어가 필요한 경우 ..

Spring/Spring Boot 2022.01.16

[Spring] spring boot - 외부 Rest API json으로 받아오기(JAVA)

JAVA로 외부 api 값을 받아오는 방법은 3가지가 있다. httpurlconnection httpclient spring resttemplate 오늘은 이 3가지 방법에 대해서 알아보고 뭐를 사용할지 알아보고자 한다. + 결론은 3가지방법을 대략적으로 파악하고, 최신 트렌드?에 맞는 RestTemplate를 쓰기로했다! 자바 Http 통신 위의 3가지 방식이 나오게된 순서를 보면 먼저, 순수 자바로만 HTTP통신을 할 수 있는 1) HttpURLConnection 클래스가 있었고, 이걸 사용하기 쉽게 추상화해서 만들어진게 2) Apache HttpClient이며 요것이 최근에 버전업을 해서 -> HttpComponents로 사용이 되고있다. 3) Spring RestTemplate는 이런 기술들을 기..

Spring/Spring Boot 2022.01.15

[Spring] API 문서 자동화 2 - Sping REST Docs

✨ api 문서화 정리 글 Swagger Spring Rest Docs RestDocs + Swagger-UI 같이사용하기 아래의 버전인 상황에서 적용을해본 예제입니다 참고해주세요 :) spring boot 3.0 jdk 17 gradle 7.5.1 1. Spring REST Docs란 Spring 에서 API 문서를 자동화하는 또 다른 방법은 Spring Rest Docs 입니다. 2. Swagger VS Spring Rest Docs 자바 문서 자동화에는 주로 Swagger 와 Spring Rest Docs 가 사용됩니다. Spring Rest Docs Swagger 장점 제품코드에 영향이 없다 API를 테스트 해 볼수 있는 화면을 제공한다. 테스트가 성공해야 문서가 작성된다. 적용하기 쉽다. 단점 ..

Spring/Spring Boot 2021.12.31

[Spring] API 문서 자동화 1 - Swagger

✨ api 문서화 정리 글 Swagger Spring Rest Docs RestDocs + Swagger-UI 같이사용하기 이번에는 API 문서 자동화를 해보려 한다. API 문서 자동화 방법은 지금까지 내가 알기로는 1. 스웨거 (Swagger) 2. Spring RestDoc 2가지 방법이 존재하고, 2번은, Spring에서만 되는거 같기 때문에, Swagger를 사용해보고, Spring RestDoc을 마지막으로 적용해볼 예정이다. 1. 스웨거란 (Swagger) 스웨거는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. - 위키 Swagger란, 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화..

Spring/Spring Boot 2021.12.29

JPA pageable 페이징 정렬, 외부 참조 엔티티 리스트 개수로 정렬할때 - @Formula

문제 Spring Data JPA를 이용해서 페이지네이션-정렬을 구현하는데, 외부 참조 엔티티의 참조하는 엔티티의 수?를 이용해서 정렬을 하고싶다. (좋아요 수) 이게 방법을 몰라, 일단, 외부 엔티티를 참조하는 멤버변수의 이름으로 정렬을 해보니, 정렬이 되긴 되었다. 하지만, 첫번째 데이터가 한번 더 중복되서 나오는 문제가 발생 심지어 순서대로 중복되는 것도 아님 왜 중복이되서 나오지조차 감이 안잡힘 DomainEntity.class @Table(name = "post") public class Post extends Timestamped { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Long idx;..

Spring/Spring Boot 2021.12.29

[Spring] JPA의 이해(JPA, Hibernate)

순서 1. JPA란 2. ORM이란 3. JPA 구조 - 하이버네이트 4. JPA 와 Spring data JPA 의 차이 5. Spring Data JPA 키워드 1. JPA란 JPA 는 Java Persistence(영속성) API 입니다. 여기서 Persistence란, 사전적 의미로 "영속성"을 의미하며, 데이터가 (없어지지 않고 오랜동안) 지속됨을 의미합니다. 램은 휘발성 데이터를 저장 - 컴퓨터가 꺼지면 사라짐 데이터가 날라가지 않도록 -> 하드디스크에 저장하면 안 사라짐 => 이게 퍼시스턴스(영구히 기록) 다시 JPA란, Java Persitance API 는 "자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API" 라고 말할 수 있다. 여기서 API는, 애플리케이션(..

Spring/Spring Boot 2021.12.29
반응형