분류 전체보기101 Spring Boot 3 + Swagger Codegen 적용하기 Swagger Editor를 활용하여 Spring Boot 3와 Gradle 환경에서 OpenAPI Specification (OAS) YAML 파일을 작성하고 이를 기반으로 API를 구현하는 방법을 단계별로 설명하겠다. 이 과정은 Swagger Editor를 사용하여 YAML 파일을 작성하고, Spring Boot 프로젝트에서 이를 활용하는 방법을 포함한다.1. Swagger Editor를 활용해서 openapi.yaml 파일생성하기Swagger Editor( https://editor.swagger.io/ )에 접근하면 YAML 파일로 작성이 가능하고 즉시 문법확인과 예시를 확인할 수 있다. 2. Swagger Editor에서 YAML 파일 작성 - 기본 구조 설정 Swagger Editor를 열면 .. 2024. 12. 27. [OAS] Swagger Codegen 필요성 (With. Spring Boot) 📗 설계 우선 접근 방식을 적용하기 위한 OAS! 설계 우선 접근 방식(Design-First Approach)은 API 개발 과정에서 API의 설계를 먼저 정의하고, 이를 기반으로 구현을 진행하는 방법론이다. 이 접근 방식은 API의 명확한 정의와 문서화를 통해 개발자 간의 커뮤니케이션을 원활하게 하고, API의 일관성과 품질을 높이는 데 중점을 둔다. OpenAPI Specification(OAS)은 RESTful API를 명확하게 정의하고 문서화하기 위한 표준화된 형식이다. OAS는 API의 엔드포인트, HTTP 메서드, 요청 및 응답 형식, 데이터 모델 등을 JSON 또는 YAML 형식으로 기술할 수 있게 해준다. OAS는 API의 설계, 개발, 테스트, 문서화, 유지보수 등 다양한 단계에서 .. 2024. 12. 26. In plugin 'org.springframework.boot' type 'org.springframework.boot.gradle.tasks.bundling.BootBuildImage' property 'archiveFile' has @Input annotation used on property of type 'RegularFileProperty' ./gradlew bootBuildImage 명령어를 통해 gradle 환경에서 클라우드 네이티브 빌드팩을 이용해 컨테이너화 하려고 할 때 In plugin 'org.springframework.boot' type 'org.springframework.boot.gradle.tasks.bundling.BootBuildImage' property 'archiveFile' has @Input annotation used on property of type 'RegularFileProperty' 이런 메시지와 함께 이슈가 발생한다면, 실행하는 스프링 부트 버전이 2.7.x 인지 확인해서 버전을 업데이트하고 다시 적용해야 한다.REFERENCEhttps://github.com/spring-projects/s.. 2024. 11. 9. 양방향 @OneToOne 문제점과 해결 방법 양방향 @OneToOne 연관관계의 문제점 필자는 Spring Data JPA를 사용할 때, 양방향 @OneToOne 연관관계를 사용하는 걸 굉장히 불편해했다. 왜냐하면 부모 엔터티에서 조회하는 쿼리를 발생시키면, 자식 엔터티와 @OneToOne의 FetchType이 LAZY 연관관계 상태로 설정했음에도 불구하고, 자동으로 자식 엔터티를 SELECT 하는 추가 SQL문이 발생했기 때문이다. 해당 문제점 때문에 부모 엔터티만 필요한 경우에도 자식 엔터티를 가져오면서 리소스 낭비와 성능 저하를 초래했다. 그래서 어쩔 수 없이 양방향 @OneToOne 연관관계가 필요할 때, 비즈니스 로직을 고려해서 최대한 호출이 되지 않을 만한 쪽을 부모 엔터티로 설정하려고 했다. 원인 지연 로딩으로 설정해도 항상 즉시 로딩.. 2024. 10. 30. @ManyToOne 연관관계에서 부모 엔터티를 등록할 때 프록시 호출을 통해 JPA 최적화 하기 @ManyToOne 연관관계에서 findById()와 getOne()은 JPA(Java Persistence API)에서 엔티티를 조회할 때 사용하는 메서드이다. 이 두 메서드는 각각 다른 방식으로 엔티티를 조회하며, 사용하는 경우도 다르다. 두 메서드의 차이점과 사용 예시 및 최적화 방법에 대해 알아보자.findById() 특징내부적으로 EntityManager의 find()를 사용하며 영속성 컨텍스트, 2차 캐시, DB로 순서로 엔터티를 반환한다. 해당 메서드를 호출하는 경우 SELECT 쿼리가 발생한다. 1. 즉시 로딩 (Eager Loading)findById()는 즉시 데이터베이스 쿼리를 실행하여 엔티티를 조회한다. 데이터베이스에서 해당 엔티티를 즉시 가져오기 때문에, 반환된 객체는 완전히 초기.. 2024. 10. 22. CascadeType.REMOVE, orphanRemoval=true 특징 JPA에서 엔티티 간의 관계를 설정할 때, CascadeType.REMOVE와 orphanRemoval=true 옵션은 부모 엔티티와 자식 엔티티 간의 삭제 동작을 제어하는 중요한 기능이다. 이 두 옵션은 비슷한 역할을 하지만, 그 동작 방식과 적용되는 상황에서 차이가 있다. 아래에서 각각의 옵션에 대해 상세히 설명하고, 그 차이점을 명확히 하겠다.CascadeType.REMOVE CascadeType.REMOVE는 부모 엔티티가 삭제될 때, 연관된 자식 엔티티도 함께 삭제되도록 하는 옵션이다. 이 옵션은 부모 엔티티의 생명 주기와 자식 엔티티의 생명 주기를 일치시키는 데 사용된다. @Entitypublic class Parent { @Id @GeneratedValue(strategy = Ge.. 2024. 10. 20. JPA 효과적인 양방향 연관관계 구성방법 양방향 @OneToMany 연관관계는 JPA(Java Persistence API)에서 부모 엔티티와 자식 엔티티 간의 일대다 관계를 설정할 때 사용된다. 이 관계를 효과적으로 구성하기 위해서는 여러 가지 고려사항이 있다.1. 부모 측에서 전이 옵션을 사용해야 한다.전이(cascading)는 항상 부모 엔티티가 자식 엔티티의 생명주기를 관리하도록 한다. 예를 들어, 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장되도록 하려면 CascadeType.ALL 또는 필요한 전이 타입을 설정해야 한다. @Entitypublic class Parent { @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) pr.. 2024. 10. 16. Jenkins Naginator 플러그인을 활용해서 Failover 구축하기 Jenkins Naginator는 Jenkins의 플러그인 중 하나로, 빌드 실패 시 자동으로 재시도하는 기능을 제공한다. 이 플러그인은 주로 불안정한 환경에서 빌드 실패를 최소화하고, 일시적인 문제로 인한 빌드 실패를 자동으로 처리하는 데 유용하다.주요 기능 Naginator 플러그인은 다음과 같은 주요 기능을 제공한다.1. 자동 재시도 설정빌드가 실패했을 때 자동으로 재시도할 수 있는 설정을 제공한다. 사용자는 재시도 횟수와 재시도 간격을 설정할 수 있다. 이를 통해 일시적인 네트워크 문제나 외부 서비스의 일시적인 장애로 인한 빌드 실패를 자동으로 극복할 수 있다.2. 조건부 재시도모든 빌드 실패에 대해 재시도하는 것이 아니라, 특정 조건에 맞는 경우에만 재시도하도록 설정할 수 있다. 예를 들어, 특.. 2024. 10. 6. 이전 1 2 3 4 ··· 13 다음