[SpringBatch] 스프링 배치란?
·
Framework/SpringBoot
스프링 배치와 배치 프로그램에 대한 개념 위주로 서술한 글입니다. 🪄 이런 분들이 읽으면 좋아요!배치 프로그램이 뭔지 몰라요스프링 배치를 처음 들어봤어요Batch배치 프로그램이란?배치 프로그램은 대량의 데이터를 정해진 주기나 조건에 따라 자동으로 처리하는 프로그램입니다. 웹 애플리케이션처럼 사용자가 요청을 보냈을 때 바로 요청을 처리하는 것이 아니라, 요청을 일괄적으로 묶어서 한 번에 처리(batch)합니다. 배치 프로그램은 반복적인 작업 처리를 해야 할 때 쓰입니다. 예를 들어 매일 새벽마다 데이터를 백업하거나, 매주 특정 시간에 보고서를 생성하는 등의 작업을 배치 프로그램을 통해 처리합니다. 또한 배치 프로그램은 백그라운드에서 실행되기 때문에 사용자가 실시간으로 신경쓰고 있지 않아도 시스템이 뒤에서..
[Spring] 내가 생각하는 Spring을 하면서 꼭 알아야 하는 개념들
·
Framework/SpringBoot
Spring을 하면서 꼭 알아야 한다고 생각하는 개념들에 대해 작성한 글입니다. 어떤 개념을 다루는지는 목차를 참고해 주세요! (2024.05.15 업데이트)  최근 스프링 프로젝트를 하면서 다시 개념에 대한 공부를 할 타이밍이란 것을 느끼게 되었습니다. 이유는 이론 공부한 지 너무 오래되어 개념들이 머리 속에서 정리가 안 된 기분이 들어서... 그래서! 이 글에서는 제가 작년부터 스프링을 공부하면서 정리한 개념들을 쭉 나열했습니다.한 개념을 자세하게 설명하지 않았습니다.!만약 어떤 개념을 자세하게 알고 싶어서 이 글을 클릭하셨다면 뒤로 가기를 추천드립니다. 여러 개념을 쓱~ 보고 싶으시다면 이 글이 도움이 될지도 모르겠습니다... ㅎ 1. 계층스프링 부트에는 프로젠테이션, 비즈니스, 퍼시스턴스 계층이 ..
[SpringBoot] Github Action을 이용한 CI/CD (ElasticBeanstalk)
·
Framework/SpringBoot
CI/CD란 무엇인지, SpringBoot 프로젝트를 Github Action을 이용하여 CI/CD를 하는 방법에 대해 작성한 글입니다. 🔔 준비 사항1. 배포할 SpringBoot 프로젝트2. (1) 프로젝트와 연동되어있는 Github Repository3. SpringBoot 프로젝트가 배포되어 있는 우분투 서버 ⚡️ 참고1. 스프링 버전 3.2.3을 사용하고 있습니다.2. Elastic Beanstalk 서버를 배포중입니다. CI/CD란? CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미하며, 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 하는 방법론 입니다. (도구를 의미하는..
[Spring] VO와 BO, DAO, DTO란 무엇인가
·
Framework/SpringBoot
VO, BO, DAO, DTO는 소프트웨어 개발에서 주로 사용되는 용어들입니다. 각각의 용어는 소프트웨어의 다른 층에서 사용되는 객체들을 나타냅니다. 각각의 역할과 특징에 대해 간단히 설명해보겠습니다.요약VO (Value Object):VO는 값을 담는 객체를 나타냅니다. 주로 데이터베이스의 테이블에 대응되는 엔티티의 상태를 나타냅니다.VO는 주로 불변(Immutable)하고, equals() 및 hashCode()와 같은 메서드를 오버라이드하여 객체의 동등성을 비교하는 데 사용됩니다.BO (Business Object):BO는 비즈니스 로직을 처리하는 객체를 나타냅니다. 주로 비즈니스 규칙을 구현하고, 데이터를 처리하며, 다양한 계산을 수행하는 데 사용됩니다.BO는 비즈니스 도메인에서의 객체를 나타내며..
[SpringBoot3] 스프링부트와 Swagger 연결방법
·
Framework/SpringBoot
Swagger가 무엇인지, 스프링부트 애플리케이션과 Swagger의 연결 방법에 대해 작성한 글입니다. Swagger란? Swagger는 API 개발 및 문서화를 위한 도구입니다. Swagger를 사용하면 자동으로 API를 문서화할 수 있습니다. 다음 기능들을 통해서 API를 문서화하고 관리할 수 있습니다. API 문서 자동 생성: Swagger를 사용하면 개발자가 작성한 API 코드를 기반으로 자동으로 API 문서를 생성할 수 있습니다. 이를 통해 API의 엔드포인트, 매개변수, 응답 형식 등에 대한 세부 정보를 쉽게 확인할 수 있습니다. API 스펙 정의: Swagger는 OpenAPI Specification(OAS)을 사용하여 API 스펙을 정의합니다. 이를 통해 API의 구조와 동작 방식에 대한..
[SpringBoot3] 엔티티 상속관계에서 @Builder 적용
·
Framework/SpringBoot
상속관계에서 Builder를 적용했을 때 발생한 이슈에 대해 작성한 글입니다. 발생 배경 엔티티에 @Builder 어노테이션을 사용하였습니다. @Entity @DiscriminatorValue("PRODUCT") @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Product extends Item { @Enumerated(EnumType.STRING) @Column(nullable = false) private ProductStatus status; // ... } 다만 Product의 부모 엔티티인 Item에도 @Builder 어노테이션이 있는데요 @Entity @Inhe..
[SpringBoot] application.properties에서 DB 정보 등 민감한 내용 분리하기
·
Framework/SpringBoot
application.properties의 정보들을 분리하여 관리하는 방법에 대해 설명한 글입니다. application.properties란 spring.jpa.defer-datasource-initialization=true spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=1234 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=create application.properties는 자바 기반의 애플리케이션에서 주로 사용되는 설정 파일..
[Spring] MappedSuperclass 사용하기
·
Framework/SpringBoot
MappedSuperclass에 대해 정리한 글입니다. @MappedSuperclass란 @MappedSuperclass는 JPA에서 엔티티 클래스들 간에 공통된 매핑 정보를 재사용하기 위한 어노테이션입니다. 이 어노테이션을 사용하면 여러 엔티티 클래스에서 동일한 매핑 정보를 공유하여 코드의 중복을 줄여줍니다. 가령 createdAt, updatedAt 등 모든 엔티티에 공통적으로 포함되는 필드가 있다면 @MappedSuperclass를 이용하여 공통된 필드를 포함하는 클래스를 다른 엔티티들이 상속받도록 하면 됩니다. @MappedSuperclass 사용 아래 BaseEntity가 @MappedSuperclass로 지정되어있습니다. import lombok.AccessLevel; import lombok..
[SpringBoot] 데이터베이스 스키마 자동 생성 옵션에 대해 알아보자 / spring.jpa.hibernate.ddl-auto
·
Framework/SpringBoot
spring.jpa.hibernate.ddl-auto에 대한 글입니다. application.properties 에서 데이터베이스 관련 속성으로 spring.jpa.hibernate.ddl-auto를 많이 보셨을겁니다. 이 글에서는 이 속성과 주요 값들에 대해 알아보겠습니다. spring.jpa.hibernate.ddl-auto spring.jpa.hibernate.ddl-auto는 스프링 부트 애플리케이션에서 하이버네이트(Hibernate)를 사용할 때, 데이터베이스 스키마를 자동으로 생성, 수정 또는 유지하도록 할 수 있는 속성입니다. 이 속성을 설정함으로써 Hibernate가 데이터베이스 스키마를 자동으로 처리할 수 있습니다. create create는 애플리케이션 실행 시에 스키마를 새로 생성합니..
[SpringBoot] created_at 처럼 엔티티 생성할 때 현재 날짜를 디폴트 값으로 지정하기 + 수정일 / Spring Data JPA automatic date creation
·
Framework/SpringBoot
엔티티가 만들어 질 때 현재 날짜를 디폴트 값으로 하는 방법에 대해 작성한 글입니다. 가령 게시글에 관한 테이블이라고 하면 created_at처럼 데이터가 추가되는 시점의 날짜를 저장하는 필드가 있을 것입니다. MySQL에서는 insert 쿼리에서 now() 함수를 쓰거나, 디폴트 값을 주면되는 아주 간단한 문제지만, 스프링에서는 어떻게 검색해야할 지도 잘 모르겠고(본인 얘기1), 내 논리라면 이게 되야 하는데...? 라고 생각하지만 잘 안되는 문제라서(본인 얘기2) 글로 정리하게 되었습니다. 부디 저만 삽질한 것이 아니길... 😈 "Spring Data JPA automatic date creation" 이라고 검색하면 스택 오버 플로우에 답변이 몇 개 있긴 하더라고요... 글은 문제를 해결하는 과정순..
[SpringBoot] 스프링 부트 data.sql이 실행되지 않을 때 (data.sql not working)
·
Framework/SpringBoot
문제 상황 main/resources/data.sql 에 insert 쿼리를 작성하였는데, api를 테스트해보니 data.sql에 있는 쿼리가 적용되지 않았습니다. data.sql INSERT INTO users (name, id, password, ...) VALUES (...); INSERT INTO users (name, id, password, ...) VALUES (...); -- 이하 생략 -- application.properties spring.jpa.defer-datasource-initialization=true spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://lo..
[Spring] Rest Template란?
·
Framework/SpringBoot
RestTemplate RestTemplate는 스프링 프레임워크가 제공하는 클래스로, RESTful 웹 서비스와 상호작용 하는 과정을 단순화하여 편리하게 API를 호출할 수 있습니다. RestTemplate의 동작 원리 어플리케이션이 RestTemplate를 생성합니다. (URI, HTTP 메서드 등 헤더를 담아서 요청함) RestTemplaterk HttpMessageConverter를 사용하여 requestEntity를 요청 메세지로 변환합니다. RestTemplate가 ClientHttpRequestFactory로 부터 ClientHttpRequest를 가져와서 요청을 보냅니다. ClientHttpRequest는 요청 메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신합니다. RestTempla..