JaeWon's Devlog
article thumbnail
[MySQL] abs 함수를 통한 절대값 구하기
BackEnd/DataBase 2022. 8. 26. 16:06

MySQL 에서 어떠한 계산 또는 음수에 대해서 절대값으로 구하기 위해 abs 함수를 사용합니다. 1. 사용법 ABS(절대값을 얻어낼 수) 2. 예제 select abs(10); // 10 select abs(-10); // 10 select abs(10 - 100); // 90

article thumbnail
[Spring] Spring Batch 정리
BackEnd/Spring 2022. 8. 26. 13:26

회사에서 업무를 하나씩 배우고 맡게 되면서, Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다. 이전 스케줄링 관련 개발을 할 때는 Crontab, Quartz 등을 사용하였는데, 여기서는 Spring Batch 를 사용하고 있었고, 해당 내용을 이해하는데 러닝커브도 있어 정리하고자 합니다. 추후에는 Spring Batch 사용 예제에 대해서도 포스팅할 예정입니다. 1. Spring Batch - Spring Batch 는 일괄 처리를 위한 오픈 소스 프레임워크이다. Batch Processing(일괄 처리) 사용자의 개입 없이 실행을 스케줄링할 수 있는 작업(job)을 의미하며. 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식이다. 배치는 예약된 시간에 자동으로 실행될 수..

article thumbnail
[Java] @SneakyThrows 란?(Lombok 어노테이션)
BackEnd/Java 2022. 8. 20. 11:53

1. @SneakyThrows - Java에서 메서드 선언부에 Throws 를 정의하지 않고도, 검사 된 예외를 Throw 할 수 있도록 하는 Lombok 에서 제공하는 어노테이션입니다. 즉, throws 나 try-catch 구문을 통해서 Exception 에 대해 번거롭게 명시적으로 예외 처리를 해줘야 하는 경우에 @SneakyThrows 어노테이션을 사용하여 명시적인 예외 처리를 생략할 수 있습니다. - 예외 클래스를 파라미터로 입력받아 원하는 예외 클래스만 동작하도록 할 수 있습니다. - JVM(클래스파일) 수준에서 검사 여부에 관계없이 모든 예외에 대해 throw 가 동작합니다. - 룸북의 공식 홈페이지에서는 이 어노테이션은 논쟁의 여지가 있어 사용 시 신중하게 사용해야 한다고 말하고 있습니다...

article thumbnail
[Java] Stream(스트림) 정리
BackEnd/Java 2022. 8. 13. 12:45

이전에 람다(Lambda)를 정리하면서 Java 1.8 부터 제공하는 람다를 활용하는 스트림(Stream) API에 대해서도 정리하고자 합니다. 기존의 Java 에서는 Collection 데이터(List, Map 등)를 처리할 때 for, while 문 등 특정 조건에 따라 요소 하나씩을 꺼내어 처리하면서 복잡한 과정을 거쳐야 했습니다. 아직도 람다 방식이 익숙치 않고 스트림 API도 종종 사용하지만 올바르게 활용하지는 못하고 있는 것 같아 정리하여 기록해보고자 합니다. 1. Stream 이란? - 데이터를 추상화하고, 처리하는데 자주 사용되는 함수들을 정의한다. 데이터 추상화 : 데이터의 종류에 상관 없이 같은 방식으로 데이터를 처리 - 데이터의 흐름 -> 배열 또는 컬렉션에 함수 여러 개를 조합해서 ..

article thumbnail
[Spring] @Scheduled 어노테이션에서 cron 사용 및 정리
BackEnd/Spring 2022. 8. 11. 18:08

회사에서 업무를 할당받게 되면서 Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다.(Spring Batch 에 대해서는 추후 포스팅하기위해, 공부하고 정리하고 있습니다...) 그전에 간단하게 스프링에서 @Scheduled 어노테이션을 사용하여 간단하게 스케줄링 하는 것을 정리해보고자 합니다. 1. Spring Schedule(스케줄) 설정하기 - 간단하게 스프링부트(SpringBoot)에서 스케줄 설정은 아래와 같이 할 수 있습니다. @SpringBootApplication @EnableScheduling public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestAppl..

article thumbnail
[Spring] WebClient 정리(API 통신)
BackEnd/Spring 2022. 8. 7. 13:35

회사에서 코드를 분석하다가 외부 API 통신 시 사용하고 있는 WebClient 를 발견할 수 있었다. Spring 5 부터 제공하는 기능이였고, 이전에는 RestTemplate 를 사용하고 있었어서 WebClient 에 대해 알아보고 정리해보고자 한다. 1. WebClient 란? - Spring 5 부터 제공하는 RestTemplate 를 대체하는 웹 클라이언트(HTTP Client). - 웹으로 API를 호출하기 위해 사용되는 Http Client 모듈 중 하나. - 기존의 동기(Sync) API 를 제공할 뿐만 아니라, 논블로킹(Non-Blocking) 및 비동기(Async) 방식을 지원해서 효율적인 통신이 가능. - 요청을 나타내고 전송하게 해주는 빌더(Builder) 방식의 인터페이스를 사용...

article thumbnail
[Java] MDC 를 사용한 로그(Log)추적하기
BackEnd/Java 2022. 7. 30. 15:20

회사에서 소스를 분석하면서 로그를 기록하는 것에 MDC 라는 것을 사용하고 있었다. (새로운 회사에서 소스 분석하면서 모든게 새롭다... 기존에 내가 사용하던 것들은 어디에...) 간단하게 구글링해보니, 멀티쓰레드 환경에서 스레드 별로 ID를 할당시켜 로깅 추적할 때 원활하게 제공해주는 것이라고 한다고 하는데 이를 정리해보고자 한다. 1. MDC(Mapped Diagnostic Context)란? - Map 형식을 이용하여 클라이언트 특징적인 데이터를 저장하기 위한 메커니즘. - slf4j,logback,log4j2 등 Logger(로거)에서 MDC를 제공한다. - MDC 는 key/value 저장소를 지원하며, 이 저장소는 ThreadContext 에 의존한다. - MDC 클래스는 Map 안에 저장된 ..

article thumbnail
[Spring] JPA - 영속성 컨텍스트(Persistence Context) 정리
BackEnd/Spring 2022. 7. 25. 09:22

이전 글에서 JPA에 대한 기본 정리를 진행해보았습니다. 이번 글에서는 JPA 에서 가장 중요할 수 있는 영속성 컨텍스트(Persistence Context)에 대해서 정리해보고자 합니다. 1. 영속성 컨텍스트란? - 엔티티(Entity)를 영구 저장하는 환경. - 어플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 저장소 같은 역할. - 엔티티 매니저(EntityManager)를 통해 영속성 컨텍스트에 접근. - EntityManager 를 통해 Entity 를 저장, 조회하면 EntityManager 는 영속성 컨텍스트에 해당 Entity 를 보관하고 관리. 2. 영속성 컨텍스트 생명주기 - 영속성 컨텍스트의 생명주기는 아래 이미지와 같이 4가지 상태가 있다. 비영속(new) : 영속성 컨텍스..

article thumbnail
@JsonProperty, @JsonNaming 정리
BackEnd 2022. 7. 23. 17:45

API 통신을 하다 보면 대부분 JSON 형태로 데이터를 주고받는다. 이때, 서로 파라미터 작성 방식(카멜케이스,스네이크케이스) 또는 파라미터 명이 다를 경우 데이터를 파싱 하는 도중에 에러 또는 원활하게 파싱이 되지 않는 경우가 있다. 0. 카멜 케이스, 스네이크 케이스 - 카멜 케이스(Camel Case) 첫 글자는 소문자로, 중간 글자들은 대문자로 시작하는 표기법 ex) memberId, memberName, memberPhoneNumber - 스네이크 케이스(Snake Case) 첫 글자는 소문자로, 중간 글자들은 언더바(_)가 포함되는 표기법 ex) member_id, member_name, member_phone_number 1. 코드 - 간단하게 Json 형태로 Request 를 전달받는 코..

article thumbnail
[Spring] JPA 정리
BackEnd/Spring 2022. 7. 22. 10:49

개발을 배우면서 처음 Java에서 DB 와 관련된 작업을 할 때는 JDBC API를 배웠습니다. JDBC API는 항상 모든 로직 안에서 Connection 객체를 받아오고, SQL 문을 작성하고, 끝나면 close 시켜야 했습니다. 그리고 이러한 중복되고 불필요한 코드를 작성하는 것을 보완해주는 MyBatis, Spring JdbcTemplate 를 배워 사용하였습니다. 최근에는 ORM 기술을 통해 SQL 작성없이 객체를 DB에 직접 저장/관리를 할 수 있게 도와주는 JPA 를 사용하여 DB 작업을 대부분 사용하고 있습니다. 이번 글에서는 이 JPA에 대해서 정리를 해보고자 합니다. 0. ORM(Ojbect-Relational Mapping) 이란? - JPA에 대해서 알기전에 기본이 되는 ORM에 대..