profile
무한삽질로그
post-thumbnail

JVM

JVM JDK, JRE, JVM image JDK Java Development Kit의 약자로, JRE와 자바 개발에 필요한 툴을 제공한다. 오라클은 Java11 부터 JDK만을 제공한다. JRE Java Runtime Environment의 약자로, JVM과 Java API (Library)로 구성된다. JRE의 목적은 Java 애플리케이션을 ...

2022년 2월 6일
·
0개의 댓글

Conditional Validation

객체의 속성 값에 따라 데이터 유효성 검사를 다르게 해야 하는 경우, 어떤 방법으로 유효성을 검증하여야 가장 효율적이고 코드 중복을 최소화하여 간단하게 할 수 있는 지를 고민하였다. 그러던 중, NHN의 기술블로그에 게시된 Validation에 대한 포스트를 보았고,

2021년 6월 9일
·
0개의 댓글
post-thumbnail

Spring Boot에 FCM 적용하기

build.gradle 설정 의존성을 추가해준다. 메시지를 보내는 형태는 fcm 공식문서에 작성된 json 형태에 맞춰 보내야한다. 우선 message 객체는 notification, token, data를 묶는다. token에는 기기의 토큰을 담아주고, notification에는 푸시알람의 제목과 내용을 담아 보낸다. data는 사용자가 정의한 da...

2021년 5월 5일
·
0개의 댓글

Spring REST Docs를 통한 API 문서 자동화

자바에서는 주로 API 명세를 위한 툴로 Swagger와 Spring REST Docs가 사용된다. Swagger의 장점은 API를 테스트할 수 있는 환경이 제공되며 Spring REST Docs에 비해 비교적 설정이 간편하다. 하지만 코드에 어노테이션을 추가해야하기

2021년 5월 5일
·
0개의 댓글

Github action을 통해 간편하게 TIL README 업데이트 자동화

요즘 많은 개발자들이 TIL, 즉 Today I Learned 를 개인 github repo에 작성하곤 한다. 물론 나는 매일(..)은 아니더라도 꼭 기록하고 싶은 기술 등이 있다면 작성하곤 하는데, 문제는 README에 TIL 인덱스를 추가하는 것이 너무나도 귀찮았다

2021년 4월 7일
·
4개의 댓글

[JPA] save the transient instance before flushing

오류 코드 개체가 저장되지 않은 일시적인 인스턴스를 참조합니다. 플러싱하기 전에 임시 인스턴스를 저장합니다. @OneToMany나 @ManyToOne 사용 시 부모 객체에 추가하는 자식 객체가 아직 db에 저장되지 않아 생긴 에러이다. 즉 영속성 전이를 해야한다. 해결 cascade = CascadeType.ALL 더 자세하게 파고드려면, 영속성...

2021년 4월 1일
·
0개의 댓글

[JPA] Spring Jpa Pagination 처리

페이징의 필요성 JPA에서는 Entity의 전체 목록을 findAll() 을 통해 불러올 수 있다. 예컨대 db 수가 적다면 List 형식으로 db의 전체 목록을 받아와도 성능에 큰 차이는 없겠지만, db의 수가 기하급수적으로 늘어난다면 이는 성능에 큰 영향을 끼친다. 따라서 paging을 통해 효율적으로 data를 반환할 수 있다. Page Page는 ...

2021년 4월 1일
·
0개의 댓글

[JPA] findAll일 때 sort해서 데이터 보여주기

JpaRepository의 findAll 사용 시 sort 하는 방법

2021년 2월 13일
·
0개의 댓글

[JPA] MultipleBagFetchException

오류 코드한 엔티티에서 두 개 이상의 @OneToMany인 Bag 두 개 이상을 EAGER로 fetch할 때 발생하였다. 나의 경우에는 한 엔티티에서 두 엔티티 객체를 List 형식으로 OneToMany 매핑관계를 설정하였는데 계속해서 에러가 났다. 정말 힘들게 찾은

2021년 2월 13일
·
0개의 댓글

[JPA] Infinite Recursion

오류 코드 원인 JPA 연관관계에서 양방향 매핑을 선언한 경우 발생 컨트롤러에서 JSON으로 값을 출력하는 경우, 타입을 변환해야 하는데 변환되는 엔티티의 필드가 다른 엔티티를 참조하고 또 그 엔티티 클래스의 필드가 또 다른 엔티티를 참조하고의 Infinite Recursion... 해결 Member Entity Tour Entity Member ...

2021년 2월 13일
·
0개의 댓글

DI/IoC

의존성 주입(Dependency Injection) 정의 객체를 직접 생성하는 것이 아니라, 외부에서 생성한 후 주입을 하는 방법이다. DI의 가장 큰 목적 객체 간의 결합도를 느슨하게 하고(의존성을 낮추고) 확장이 용이하게 하여 객체지향적 프로그래밍을 가능하게 한다. 스프링에서는 Spring 컨테이너, IoC 컨테이너라는 개념을 사용한다. 컨테이...

2021년 1월 10일
·
0개의 댓글

VSCode에서 Snippet(자동완성) 이용하기

Snippet은 간단하게 말하면 자동완성같은 기능이다. prefix를 지정하고 코드 내에서 입력하면, 지정한 코드들을 자동으로 완성시킨다. pic1 Preferences에서 User Snippets를 클릭한다. pic2 cpp.json을 클릭해서 prefix와 body를 지정해주면

2021년 1월 10일
·
0개의 댓글

클래스

5주차 클래스 클래스 선언 기본 선언 방식은 위와 같다. 클래스 몸체는 새로운 객체를 초기화하는 생성자, 클래스와 그 객체의 상태를 제공하는 필드, 행동을 구현하는 메소드를 포함한다. 클래스가 상위 클래스의 상속을 받는지, 인터페이스를 구현하는지에 대한 정보 역시 선언할 때 제공할 수 있다. 또한 public과 private과 같이 다른 클래스...

2020년 12월 17일
·
0개의 댓글
post-thumbnail

IntelliJ에서 JUnit 5 Test 시@DisplayName이 보이지 않을 때

JUnit 5 Jupiter로 테스트를 실행하는데 지정한 DisplayName은 보이지않고 각 클래스와 메소드 이름만 보였다..😞 💡How to Solve Preferences → Build, Execution, Deployment → Build Tools → Gradle 에서 Run tests using 을 IntelliJ IDEA로 변경한다. [출...

2020년 12월 13일
·
0개의 댓글

JUnit 5

JUnit 5 JUnit5란 무엇인가? Junti은 이전 Junit과 달리, 3개의 다른 서브 프로젝트로부터 각기 다른 모듈들로 구성되어있다. > JUnit 5 = Junit Platform + JUnit Jupiter + Junit Vintage Java 8부터 지원 Junit Platform Junit Platform은 JVM 환경에서 테스팅...

2020년 12월 12일
·
0개의 댓글

제어문

4주차 제어문 보통 statement는 위에서부터 아래로 실행된다. 하지만 제어문은 프로그램이 조건적으로 특정한 코드 블럭을 실행하도록하여 기존의 실행 흐름을 깬다. 제어문은 선택문, 반복문, 분기문으로 구성된다. 선택문 if문 if문은 제어문의 가장 기본이다. 조건이 참일 때만 특정 부분의 코드를 실행시키도록 한다. 예를들어, Bycle이라는 클...

2020년 12월 11일
·
0개의 댓글

자바 데이터 타입, 변수 그리고 배열

자바 데이터 타입, 변수 그리고 배열 자바 데이터 타입, 변수 그리고 배열 프리미티브 타입 종류와 값의 범위 그리고 기본 값 | | 정수형 | 문자형 | 실수형 | 논리형 | | ------- | ------ | ------ | ------ | ------- | | 1바이트 | byte | - | - | boole...

2020년 12월 11일
·
0개의 댓글

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 JVM이란 무엇인가 자바 가상 머신(Java Virtual Machine)은 자바가 운영체제에 독립적으로 작동할 수 있도록 하는 소프트웨어이다. 즉, JVM은 컴파일된 자바 소스코드인 바이트코드를 실행하기 위해 각각의 운영체제에 맞는 기계어로 변환시킨다. 따라서 자바는 운영체제에 독립적이지만, JV...

2020년 11월 18일
·
0개의 댓글

[백준] 2493 탑 C++

원리는 간단하고 금방 풀 수 있을 것 같았지만....^^ 이 문제에서 스택은 수신을 받을 수 있는 수신탑인지를 판별하기 위해 사용한다 우선, 스택이 비어있을 때, 즉 수신할 수 있는 탑이 없을 때, answer 배열에 0을 대입한다. 입력받은 수신탑의 크기가 기존 스택의 top보다 크다면, pop을 해줘야 한다. ( = 스택의 top은 입력받은 수신탑...

2020년 10월 10일
·
0개의 댓글

[백준] 1874 스택수열 (C++)

철저하게 조건들 하나하나 나눠서 생각했던 것 같다.. 완전 개차반으로 짜서 틀릴줄 알았는데 맞아서 신기했음 다 풀고 다른 사람들 풀이 보는데, No 출력 조건 어렵게 생각 안해도 되었음!! 그냥 stack이 empty가 아니라면 No 출력하면 그만...😞

2020년 10월 8일
·
0개의 댓글