반응형

자바 5

[JPA] Spring Data JPA로 생성일자, 수정일자 컬럼을 간단히 추가하자

Spring Data JPA에는 Auditing 기능을 편하게 다룰 수 있도록 @CreatedDate, @LastModifiedDate 어노테이션을 제공해준다. 그리고 생성일자, 수정일자 컬럼은 웬만한 모든 도메인에 있으면 로깅 및 사용자 입장에서도 간편하다. 따라서 보통 BaseEntity라는 생성일자, 수정일자가 들어있는 상위 엔티티를 만들고 상속 구조를 이용하는 방법을 진행한다. 이번 포스팅에서는 이 방법에 대해 기록해보려 한다. 개발환경 Spring Boot 2 버전 Spring Data JPA lombok 프로덕션 코드 BaseEntity @EntityListeners(AuditingEntityListener.class) @MappedSuperclass @Getter abstract public..

null을 반환하지 말고 빈 객체, 또는 Optional을 반환하자

우아한테크코스 미션을 진행하면서, 그리고 이펙티브 자바를 읽으면서 null 반환의 위험성을 알게 됐다. 로또 미션을 진행하면서 로또 구매 방법에는 자동, 수동이 존재한다. 수동으로 구매할 것이라면 구매할 로또 번호들을 입력하고, 구매하지 않을 것이라면 생략해주자 수동 로또를 구매할 개수를 입력받을 때, 0이 아닌 특정 자연수값이라면 번호를 List에 담은 객체를 넘겨주면 되지만, 0이 입력됐을 경우, 두 가지 방법이 존재한다. null을 반환해준다. 빈 객체(Collections.emptyList())를 반환해준다. 1번 방법은 위험한 방법이다. null을 반환해줄 경우, 이를 사용하는 프로덕션 메소드에서 null일 때에 따로 처리하는 로직을 추가로 만들어주어야 한다. 그렇지 않을 경우, 우리를 자주 괴..

[JAVA] JDK 환경설정 / WARNING: An illegal reflective access operation has occurred 경고 해결

우테코 프리코스를 진행하던 도중 test code를 돌릴 때 아래 경고문구가 발생했다. 테스트 코드는 통과하며, 코드 에러도 뜨지 않는다. 즉, 에러 문구가 아닌 경고 문구이지만, 상당히 거슬린다. 해결방법 원인은 JDK 11 버전을 사용하고 있었기 때문이었다. cmd 창에서 jdk -version은 1.8.0 이라 뜨는데, 인텔리제이 ide에서 내가 자바11을 사용하고 있었기 때문인 것으로 보인다. 따라서 인텔리제이에서 jdk 1.8 (java 8) 버전을 설치해주기로 했다. 요즘은 인텔리제이 자체에서 jdk를 다운받을 수 있는 편한 세상이 됐다. 1. Ctrl + alt + s 를 눌러 설정에 들어간 후, gradle이라 쳐주고 위 화면에서 Download JDK를 클릭한다. 2. jdk 1.8 (j..

[Java] 자바 final의 역할과 싱글톤 패턴

스프링 MVC 2편을 듣던 도중, 싱글톤 패턴 관련 내용이 나와서 오랜만에 싱글톤 패턴 내용을 복습하던 중 final에 대한 궁금증이 생겨서 공부한 내용을 포스팅해보려 한다. (역시 Java 기본기가 중요한듯하다.) 먼저 singleton pattern이 어떤 과정에서 필요하게 됐는지부터 서술하겠다. 싱글톤 패턴이 필요했던 이유 Controller에서 model에 attribute할 때, 똑같은 객체를 여러 메소드에서 attribute해야 하는 경우가 생길 수 있다. 이럴 경우 코드가 중복되며, 코드 길이가 길어지기 때문에 가독성 또한 좋지 않다. List와 같은 컬렉션 객체를 컨트롤러 내의 수많은 메소드에 attribute하기엔 중복되는 코드가 많기 때문에 @ModelAttribute 관련 메소드를 아..

[Spring] 빈 생명주기 콜백과 객체의 초기화

4월이 되고 일병4호봉이 되었다. 그 기념 오늘은 스프링 공부를 하려 한다. (???) 사실 위 이유는 농담이고, 요즘 nodejs, 백준 알고리즘 공부로 인해 스프링부트 공부를 많이 진행하지 못했다. 스프링 핵심원리 기본편 강의를 4월 중순까진 완강하고 5월부터는 spring security를 이용한 로그인 기능을 구현하거나, crud 기능을 응용해서 게시판 기능을 만들거나, 아니라면 크롤링을 통해 유저의 맞은 문제 리스트를 보여주는 기능을 구현하든지 하고 싶다. 사실 이런 내용은 나중에 따로 내 일기장 글에 포스팅하면 되므로 여기서 마치고 본론으로 어서 들어가보자. 인프런 김영한님의 스프링 핵심 원리 강좌를 수강하고 제 개인적인 공부를 복습 겸 포스팅한 내용입니다. 틀린 내용은 댓글로 피드백 부탁드립..

JAVA/Spring_Core 2021.04.01
반응형