반응형

분류 전체보기 406

JPA @CreatedDate @LastModifiedDate 생성 시간, 수정 시간이 저장되는 원리

@CreatedDate, @LastModifiedDate 데이터를 저장할 때 '생성된 시간 정보'와 '수정된 시간 정보'는 여러모로 많이 사용되고 또 중요합니다. JPA를 사용하면서 @CreatedDate, @LastModifiedDate를 사용하여 생성된 시간 정보, 수정된 시간 정보를 자동으로 저장할 수 있는데요. 오늘 작업 중에 createAt, updatedAt 값이 계속 null로 들어가던 문제를 해결하면서 동작 원리에 대해 조금 더 살펴본 내용을 정리합니다. (null이 들어간 원인은 main method가 실행되는 Application class에 @EnableJpaAuditing 어노테이션을 적용하지 않아서였습니다.) * 내용 중 자주 등장할 'audit' 는 심사, 감사하다는 뜻입니다. ..

상수와 리터럴 (constant & literal) 정리

해당하는 내용은 'Java의 정석 - 남궁 성' 도서의 내용을 참고하여 정리한 것입니다. 상수 (constant) final int MAX_VALUE = 100; // 상수 선언과 동시에 초기화 상수(constant)는 변수와 마찬가지로 '값을 저장할 수 있는 공간' 이지만 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없다는 특징이 있습니다. 사용 방법은 변수의 타입 앞에 'final' 키워드를 붙여서 사용합니다. * JDK 1.6 이전에는 상수 선언과 동시에 초기화가 필수였으나, 1.6 이후부터는 선언과 동시에 초기화하지 않아도 됩니다. 하지만 상수는 선언과 동시에 초기화하는 것이 좋습니다. 리터럴 (literal) int year = 2021; // year : 변수, 2021 : 리터럴..

Programming/Java 2021.10.27

카카오톡 뷰 채널에 티스토리 연동하기

'카카오톡 뷰 채널 만들고 티스토리 연동하는 방법' 얼마 전부터 카카오톡에 뷰라는 오픈형 큐레이터 기능이 생기고, 뷰를 통해 블로그나 티스토리에 있는 글을 연동하여 노출할 수 있게 되었습니다. 이렇게 연동된 글을 통해 블로그 방문자 수가 급증하는 등, 카카오 뷰는 블로그나 티스토리, 카페 등에 새로운 홍보를 할 수 있는 수단으로 떠오르고 있습니다. 기존에 블로그나 티스토리에 꾸준하게 쌓인 글이 있다면 카카오 뷰에 다음과 같은 채널 보드를 만드는 것은 어렵지 않습니다. 먼저 카카오톡에서 가운데 눈 모양의 아이콘을 클릭하고, 우측 상단에 설정 아이콘을 통해 오른쪽 이미지에 보이는 '내 활동 관리'로 들어갑니다. 보드를 만들기 위해서는 먼저 채널을 만들어야 하는데요. 채널을 만들기 위해서는 '카카오 비즈니스 ..

etc 2021.10.26

(mac) Port was already in use. 포트 찾아서 종료시키는 방법

Web server failed to start. Port was already in use. 개발 중 어플리케이션을 실행한 포트에 이미 다른 어플리케이션이 동작하고 있을 경우 발생하는 현상입니다. 해결 방법은 해당하는 포트에서 동작 중인 프로세스를 식별하여 중지하거나, 이 응용 프로그램을 다른 포트에서 실행하는 것인데요. 아래는 macOS Terminal에서 포트를 찾고, 중지시키는 방법입니다. lsof -i tcp:8081 특정 포트를 찾고 싶을 때 사용하는 명령어입니다. 여기서 8081이 port 번호입니다. 해당 명령어를 통해 프로세스가 실행되고 있는 PID를 알아냅니다. * lsof는 list open files의 약자로 시스템에서 열려있는 모든 파일과 해당 파일들을 열고 있는 프로세스들의 목록..

Programming/MacOS 2021.10.26

프로그래밍 시간 표현 단위 Unix Time ( = Epoch Time ) 이란

프로그래밍을 하게 되면 '1635083262' 와 같은 형식의 숫자만으로 시간을 표현하는 경우가 있습니다. 이 같은 표현 방식을 Unix Time 또는 Epoch Time 이라고 하는데요. Unix Time, Epoch Time은 부르는 이름만 다를 뿐 같은 것을 의미합니다. (POSIX Time 이라고도 합니다.) 이것은 시간을 나타내는 방식으로, '1970년 1월 1일 00:00:00 협정 세계시(UTC)' 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것입니다. * 유닉스 시간에서 윤초(Leap Second)는 반영하지 않습니다. 이 시간 표현 방식은 유닉스 계열의 운영체제나 여러 다른 운영 체제, 파일 형식들에서 사용되며, 어떤 일이 발생했을 때 무엇이 먼저 발생하고, 나중에 발생했는지를 판단할..

Programming/Web 2021.10.24

스프링부트 REST API Excel download 방법

Spring boot REST API Excel download 기본적인 방법 (feat. apache poi) 스프링 부트 REST에서 poi 라이브러리를 사용하여 엑셀을 다운로드하는 방법입니다. poi 라이브러리는 아파치 소프트웨어 재단에서 만들었고, microsoft office 파일 포맷을 자바 언어로 읽고, 쓰는 기능을 제공하는 라이브러리입니다. 작업 환경은 아래와 같습니다. 'org.springframework.boot' version '2.4.10-SNAPSHOT' java 1.8 Gradle // https://mvnrepository.com/artifact/org.apache.poi/poi implementation group: 'org.apache.poi', name: 'poi', ve..

날짜와 시간을 다루는 LocalDate, LocalTime, LocalDateTime (java.time 패키지) 기본 개념

Java 날짜와 시간을 나타내는 Calendar class [Java] 날짜와 시간을 나타내는 Calender class 날짜와 시간은 어떤 프로젝트에서든 뺄 수 없는 데이터입니다. 개발을 하며 앞으로 계속 사용될 날짜와 시간에 대해 정리하고 싶어서 공부한 내용을 정 wildeveloperetrain.tistory.com java.time 패키지 java.time 패키지는 이전 포스팅에서 정리한 jdk1.0에서 나온 Date, jdk1.1에서 나온 Calendar의 단점을 해소하기 위해 jdk1.8부터 사용되었습니다. java.time 패키지 아래에는 4가지 하위 패키지가 존재하는데요. java.time : 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공 java.time.chrono : 표준(ISO..

Programming/Java 2021.10.19

Java 날짜와 시간을 나타내는 Calendar class

[Java] 날짜와 시간을 나타내는 Calender class 날짜와 시간은 어떤 프로젝트에서든 뺄 수 없는 데이터입니다. 개발을 하며 앞으로 계속 사용될 날짜와 시간에 대해 정리하고 싶어서 공부한 내용을 정리합니다. 'Date class'는 JDK 1.0부터 제공된 클래스로 제공되는 기능이 부족하여 JDK1.1부터 'Calendar class'가 나오게 되었습니다. 현재는 기존 클래스들의 단점을 개선한 JDK 1.8부터 나온 java.time 패키지의 'LocalDate', 'LocalTime', 'LocalDateTime'가 많이 사용되는데요. Date와 Calendar 역시 아직까지 사용되는 부분이 있기 때문에 간단하게 먼저 정리하려고 합니다. Calendar cal = new Calendar();..

Programming/Java 2021.10.18

@NotNull @NotEmpty @NotBlank 차이점 한번은 알고 가자

@NotNull @NotEmpty @NotBlank javax.validation.constraints package에 포함된 기능으로 api에서 값을 입력받을 때 validation 체크를 위해 사용되는 어노테이션입니다. 많이 사용하게 되는 어노테이션으로 한 번만 차이를 확실히 알고 나면 용도에 맞게 잘 사용할 수 있습니다. @NotNull 먼저 NotNull 입니다. The annotated element must not be null. Accepts any type. NotNull은 말 그대로 null 값만 허용하지 않습니다. 그렇기 때문에 "", " " 가 입력되었을 경우는 허용하게 됩니다. @NotEmpty 다음으로 NotEmpty 입니다. The annotatd element must not ..

RestTemplate 4xx, 5xx Code 처리하는 방법 (HttpClientException)

RestTemplate이란 간략하게 spring framework 3.0부터 지원되는 http 통신에 사용되는 템플릿입니다. RESTful 형식을 따르며 json, xml 형식의 데이터를 쉽게 받을 수 있습니다. * RestTemplate에 대한 자세한 내용은 다루지 않고 해당 에러에 관한 내용만 다루는 포스팅입니다. { "state": 400, "data": [], "result": "fail", "message": "QR 코드의 유효기간이 지났습니다.", "error": [] } RestTemplate의 문제점 중 하나는 위 예시의 json 데이터 처럼 4xx, 5xx의 응답 코드를 받았을 때 Exception을 발생시킨다는 것인데요. 통신을 하다보면 200 상태의 success 뿐만 아니라 4xx,..

반응형