Java & Spring
![[에러로그] JpaSystemException - 원인 : GenerateValue](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FImcAc%2FbtrW1O9vy1p%2FAAAAAAAAAAAAAAAAAAAAAEL1xiyCpX23ZQaWcS9viPvSACbRCUW-AWw2em9BuibD%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DvxMH%252BLWrkUEbrC4%252FNfLy8sZGErU%253D)
[에러로그] JpaSystemException - 원인 : GenerateValue
에러로그 { "status": 400, "exception": "JpaSystemException", "message": "잘못된 요청입니다." } 원인 제목에서 알 수 있듯 여러 원인이 존재 할 수 있으나, 이번 나의 원인은 식별자 생성 전략을 설정해 주지 않아서다. 즉, 매우 기초적이고 단순한걸 간과했다가 하루를 눈녹듯 녹여버린 케이스. 해결방법 @GeneratedValue /** * DB 유형에 따라 생성 전략을 변경할 수 있고, 설계에 따라 직접 지정하기도 한다. * 두 방식 모두 Java.persistence 라이브러리를 사용한다. * * 1. JPA에서의 전략설정 * DB에 따라 시퀀스 전략 등 다른 전략을 택하기도 하며, 디폴트는 IDENTITY 전략이다. * 변경방법은 아래와 같다. * @..
[Java] String 출력 방법 3가지 (String | StringBuffer | StringBuilder)
취지 및 결론 1. 취지 : Stirng, StringBuilder, StringBuffer를 각각 사용할 때마다 메모리와 속도가 다르다. 왜 그럴까 궁금하기도 하고, 어떤게 더 효율적인지 알아두고 쓰는게 좋을거 같아 조사했다. 2. 결론 : 일반 String으로 연산 => 제일느리지만, 불변 밸류 (연산적고 읽기가 많을때 권장) : StringBuilder => 단일 스레드에서 빠름 (시퀀스 방식) : StringBuffer => 멀티 스레드에서 빠름 차이 : String 단순 연산은 불변 밸류(Immutable)f라는 특성이 있기 때문에 느리다. 즉, 값이 한번 설정되면 변경될 수 없는데, 그렇기 때문에 우리 눈에 같은 문자열에 값을 추가하는 것처럼 보이지만, 사실상 new String으로 새로운 인..
![[Ngrok] Cors 이슈 해결하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FtM0le%2FbtrWDPnBpIM%2FAAAAAAAAAAAAAAAAAAAAANK2Y1CqhjxskwQoTwKkwp_mMgmVIhHwL1icGtWHqUxj%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DycY9xx7oEY4BwH0fN2695pFiEME%253D)
[Ngrok] Cors 이슈 해결하기
Ngrok을 이용한 사용을 하다보면, Postman에서는 정상적으로 동작을 하나, 프론트에서 브라우저 등으로 요청을 보내면 cors 이슈가 발생할 수 있다. 1. 아래의 명령어로 ngrok 서버를 실행해보자 ngrok http --host-header=rewirte 8080 * 여기서 8080은 본인이 사용하고자 하는 로컬 포트 번호이다. * 여기서 포트는 서버쪽에서 요청을 받는 포트이므로, 프론트의 포트랑은 다른 값이어도 된다. 2. controller에서 @CrossOrigin으로 일단 와일드로 열어보기 @CrossOrigin(origins = "*", allowedHeaders = "*")
[Spring] ErrorResponse 처리 템플릿
목적 : Global Exception Advice에 설정한 예외 처리 외에, 특정 에러를 처리하고 싶은 경우에 추가하여 사용 예제 코드 (1, 2번이 있다면, 3번의 템플릿 코드만 추가하여 사용하면 됨) 1. ErrorResponse 더보기 package backend.global.exception.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import org.springframework.http.HttpStatus; @Getter @AllArgsConstructor @Builder public class ErrorResponse { private int status; // 에러코드번호 priva..