목록개발/Spring (7)
@ToString() 엔티티 간에 연관관계를 지정하는 경우 항상 @ToString() 주의! @ToString은 해당 클래스의 모든 멤버 변수를 출력. 연관관계가 있는 엔티티 클래스의 경우 @ToString을 할 때는 습관적으로 exclude 속성을 사용하는 것이 좋음. exclude는 해당 속성값으로 지정된 변수는 toString()에서 제외. 지연 로딩의 장/단점 장점: 지연 로딩은 조인을 하지 않기 때문에 단순하게 하나의 테이블을 이용하는 경우 빠른 속도의 처리가 가능. 단점: 필요한 순간에 쿼리를 실행해야 하기 때문에 연관관계가 복잡한 경우에는 여러 번의 쿼리가 실행된다. ⇒ 보편적인 코딩 가이드는 '지연 로딩을 기본으로 사용하고, 상황에 맞게 필요한 방법을 찾는다' JPQL / l..
@Data 에 포함되어 있는 lombok은 다음과 같다. @ToString @EqualsAndHashCode @Getter : 모든 필드 @Setter : 정적 필드가 아닌 모든 필드 @RequiredArgsConstructor @RequiredArgsConstructor 의존성 자동 주입 @Transactional 선언된 메서드를 하나의 '트랜잭션'으로 처리하라는 의미 속성에 따라 다르게 동작하지만, 기본적으로는 필요할 때 다시 데이터베이스와 연결이 생성됨. JPA 외래키에 LAZY 옵션 등록 되어있을 때 에러 해결. @RestController 모든 메서드의 리턴 타입은 기본으로 JSON 메서드의 반환 타입 = ResponseEntity 객체 이용 → HTTP 상태 코드 등을 같이 전달..
SpringBoot Profile의 필요성 프로젝트 개발을 진행하다보면, 개발환경과 실제 운영환경에서 환경설정이 달라질수 있다. 예를들어 application.properties 파일을 보자. handlebars.suffix=.html handlebars.cache=false handlebars.expose-session-attributes=true spring.jpa.hibernate.ddl-auto=create-drop spring.datasource.url=jdbc:mysql://localhost:3306/database spring.datasource.username=dev spring.datasource.password=1234 spring.jpa.show-sql=true spring.jpa.p..
암시적 그랜트 플로우 인가 GET /authorize? response_type=token& client_id=[CLIENT_ID]& redirect_uri=[REDIRECT_URI]& scope=[SCOPE]& state=[STATE] HTTP/1.1 Host: server.example.com AccessToken HTTP/1.1 302 Found Location: [REDIRECT_URI]# access_token=[ACCESS_TOKEN]& token_type=[TOKEN_TYPE]& expires_in=[EXPIRES_IN]& scope=[SCOPE]& state=[STATE] Error HTTP/1.1 302 Found Location: [REDIRECT_URI]# error=[ERROR_CO..

# Airflow란? workflow 스케쥴링, 모니터링 도구 DAG(Directed Acyclic Graph)라는 개념으로 동작, python으로 DAG를 작성하고 순서를 정의 Airflow pipeline(동작 순서, 방식)을 python을 이용해 구성하기 때문에 동적인 구성 가능 Airflow는 각 태스크에서 오류가 발생할 때마다 여러 번 재 실행하기에 매우 회복성 높은 설계를 이끌어낸다. Airflow를 완전히 멈췄다가 미 완료 태스크를 재시작하면서 실행 중이던 업무 흐름으로 되돌아갈 수 있다. # Airflow 구성 => Airflow는 개발자가 작성한 Python DAG를 읽고, 거기에 맞춰 Scheduler가 Task를 스케줄링하면, Worker가 Task를 가져가 실행합니다. Task의 실..