Java 22

[Spring] @RequestBody와 @RequestParam

프로젝트를 진행하던 중, form-Data와 json을 서버에서 처리하는 방식에 대한 오류를 다루던 중 알게된 @RequestBody와 @RequestParam의 명확한 차이를 정리해보자. @ReqeustBody 조금 쉽게 설명하면 클라이언트가 전송하는 JSON을 받아오기 위해 특화된 어노테이션이라고 이해해도 좋다. 나는 Body에 있는 데이터 중 JSON이 아닌 바이트나 스트링이여도 알아서 되는 줄 알았던 바보같은 생각을 했던 것이다... 그래서 Multipart와 같이 바이트로 전달되는 것들은 파싱할 수 없다. 만약 클라이언트에서 "/nickname" 경로로 POST 요청을 보낸다고 해보자. body에 아래와 같은 JSON 형태를 전송하게 된다면 { "nickname": "dd", "token": "..

Spring 2024.01.22

모각코 6차(230810)

https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 1. 문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 말(Horse)이 되기를 간절히 원했다. 그래서 그는 말의 움직임을 유심히 살펴보고 그대로 따라 하기로 하였다. 말은 말이다. 말은 격자판에서 체스의 나이트와 같은 이동방식을 가진다. 다음 그림에 말의 이동방법이 나타나있다. x표시한 곳으로 말이 갈 수 있다는 뜻이다. 참고로 말은 장애물을 뛰어넘을..

모각코 2023.08.12

[백준/BOJ] 1600번 말이 되고픈 원숭이 (자바/Java)

https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 1. 문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 말(Horse)이 되기를 간절히 원했다. 그래서 그는 말의 움직임을 유심히 살펴보고 그대로 따라 하기로 하였다. 말은 말이다. 말은 격자판에서 체스의 나이트와 같은 이동방식을 가진다. 다음 그림에 말의 이동방법이 나타나있다. x표시한 곳으로 말이 갈 수 있다는 뜻이다. 참고로 말은 장애물을 뛰어넘을..

BOJ/BFS DFS 2023.08.12

DTO, DAO란? (DAO와 Repository의 차이)

오늘은 JPA를 공부하다가 나온(사실 JPA와 관련 없는 내용이지만) DTO와 DAO에 대해서 알아보고, DAO와 Repository는 어떤 차이점이 있는지 알아보겠습니다. 1. DTO(Data Transfer Object) 그대로 직역하면, 데이터를 운송하는 객체입니다. 보통 웹과 서버에서 데이터를 주고받을 때 사용되는 객체라고 이해해도 무방합니다.(혹은 데이터를 전송할 때 사용하는 객체.) 특이하게 이 객체는 메서드가 존재하지 않습니다. 단순히 필드만을 가지고 있고, 이 필드에 정보가 담겨져서 운송되는 방식이라고 생각하면 좋습니다. DTO를 이용할 때는 아래와 같은 규칙을 이용하여 작성합니다. 필드는 모두 private으로 선언합니다. Getter와 Setter를 열어둡니다. 아직 더 심화해서 사용해..

JPA 2023.08.10

[백준/BOJ] 2206번 벽 부수고 이동하기 (자바/Java)

https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 1. 문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 만약에 이동하는 도중..

BOJ/BFS DFS 2023.08.06

JPA에서 Enum 타입 사용하기

오늘은 JPA 실습을 하던 중, Enum 타입을 사용한 것에 대해서 배운 내용을 토대로 정리해보겠습니다! 1. Enum이란? 간단하게 Enum에 대해서 짚고 넘어가겠습니다. Enum은 열거형이라고도 불리며, Enum 내에 선언된 값은 선언된 순서대로 순서를 갖습니다. 아래와 같이 사용할 수 있습니다. public enum OrderStatus { ORDER, CANCEL } 이렇게 되면, ORDER는 0에 매핑되고, CANCEL은 1에 매핑됩니다. 따라서 순서 또한 갖습니다. 추가적으로, 코드에서 봤다시피 Enum은 보통 대문자로 표기해줍니다. 관례니 따라줍시다. 2. JPA에서 Enum을 사용하는 이유 그렇다면 우리는 JPA에서 Enum을 왜 사용할까요?? 우리는 아래와 같은 표를 보면 바로 알 수 있..

JPA 2023.08.04

[Java/자바] No tests found for given includes:

문제 JPA에 대한 실습을 진행하던 도중, 테스트 코드를 실행하는 부분에서 위와 같은 에러가 터졌다. No tests found for given includes: 해결 인텔리제이에서 Preference 혹은 settings에 들어가서 검색창에 'Gradle'을 검색한다. 아마 이런 식으로 세팅이 되어있을 것인데, 여기서 Building and run using 과 Run tests using을 IntelliJ로 바꿔주자. 이 오류가 해결될 뿐더러, 실행 속도도 빨라진다.

Error Record 2023.08.04

영속성 컨텍스트(Persist Context) - 간단하게 이해하기

해당 글은 정확한 개념보다는 지식이 전무후무한 독자들이 가볍게 읽을 수 있는 형태로 작성되었습니다. 보다 정확하고, 깊이있는 글을 원하시는 분은 다른 글을 참고하시면 좋을 것 같습니다. 자바 스프링부트 JPA를 막 시작했다. 개념보다는 실전을 먼저 들어가서, 모르는 개념을 찾아 우선적으로 익힌 다음에 개념 강의로 더 단단한 개념을 쌓으려고 시도했다. 시작하자마자 모르는 것 투성이... 다 체크하고 개념에 대해서 조금 익혔다. 이 글은 JPA에 대한 개념이 없이 영속성 컨텍스트 및 영속성에 대한 개념을 대략적으로나마 이해하고자 하는 독자에게 추천한다. 1. 엔티티 엔티티는 데이터베이스에서도 들어보았던 용어였습니다. 쉽게 얘기하자면, 데이터베이스에 한 테이블에서 하나의 행을 의미합니다. 즉, 하나의 데이터를..

JPA 2023.08.04

모각코 4차(230729)

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1. 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이..

모각코 2023.07.30

[백준/BOJ] 5430번 AC (자바/Java)

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1. 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이..

BOJ 2023.07.30