본문 바로가기

전체 글

(71)
rest api 명세작성 -> 요청 데이터 제대로 쓰는법 get 요청 body에 담으면 안되면 요청데이터 없는거 아닌가? -> 아님. pathvariable없으면 쿼리파라미터? 로 쓰면 된다.. 헤더에 있나? 쿼리파라미터는 url에 쓰지말고 요청데이터에.. 필수값인지? 디폴트값, 타입 이런거 상세히 명시해줘야함.
Optional 클래스 의 예외처리 메서드 .orElseThrow() 사용기 orElseThrow는 서버측에서 까지만 확인되는 예외처리인가, 아니면 클라이언트측 까지 전달되는건가? --> 서버까지만. orElseThrow를 쓰고, if ,else 지양 하라길래, orElseThrow에서 return ResponseEntity ~~ 해버려서 상위 api메서드 중지까지 하려고 햇음. 뭐 무슨 람다표현식 써서.. supplier적용하여.. 어쩌고 하라길래 해봤는데 --> 안된다. orElseThrow메서드는 예외를 던질 때만 사용하는 애다. 뭐.. 사용자정의예외처리 클래스 정의해서 ㅇㅓ찌저찌 해볼 수 있겠지만... 코드가 지저분해질것같다. 저 안에 다른 클래스 필드가 있는자체가 이상하다. 해결방법은 의외로 간단했다.. try catch문 사용 ㅠ 엥? 이정도는 해도 되나본데? 보면 안..
예외처리는 어디까지 해놓아야 하는가? 예를들어.. A라는 컨트롤러 클래스 안에 B라는 api 메서드가 있다. B라는 api는, C라는 서비스 메서드를 포함한다. C라는 서비스 메서드엔, Optional의 예외처리, orElseThrow()가 정의되어 있다. 여기서, 실행했을때, C에서 orElseThrow가 발생하면 당연히 C는 중단되고, B도 중단된다. 따라서 B에서도 C의 예외처리를 해주어야 한다. 라고 한다..
Optional 사용기.. Optional user = 어쩌고 해놓고, if (user.isPresent()) {} else{} ---> 이렇게 else로 예외처리 하는것은 좋지 않다. 아마 상위의 저 user클래스를 생성?호출? 하는 코드를 따라가보면, Repository에서 아예 쿼리문 반환형이 Optional 일 것. 그렇다면, orElseThrow () 를 이용하는게 더 효율적이다. 라고 한다!! ++ 반환값으로 절대 null을 할당하지 말자. null을 반환하는것을 방지하기 위해 Optional이 존재하는것인데, null을 할당해버리면 무용지물. Optional.empty()를 반환하래.
Transactional 이 뭘까 transactional 업무의, 업무적인 서비스 코드(메서드) 에 보통 적용하는 어노테이션. 하나의 일처리가 이루어 지는 일련의 과정을 트랜잭션 이라고 한다. 트랜잭션 연산은 독립적으로 이루어지며, 그 과정 중간에 다른 연산을 수행할 수 없고, 하나의 연산이라도 오류가 발생한다면 해당 트랙잭션은 취소되고 모두 원래대로 되돌아 가야 한다. 반드시 모든 연산이 성공해야만 트랜잭션이 성공했다고 볼 수 있다. -> 의도치 않은값이 저장,조회 되는 것을 막기 위함. 아래와 같은 예시를 막기 위함.
dto 의 hashmap 필드 nullpointexception 에러 이렇게 했더니, addData를 해도 값이 세팅이 안됨. --> 이 클래스 에서는, allargsconstructor를 통해 자동으로 모든 필드의 생성자를 자동으로 생성함. 이 생성자는 code, message, data 세 개의 매개변수를 받는다. 그리고 data필드를 선언할 때 기본값으로 빈 hashmap을 설정 했다. 이렇게 함으로써 객체를 생성할 때, data필드가 항상 null이 아닌 빈 HashMap으로 초기화 된다. 이것이 클래스의 생성자에서 data 필드를 "기본값으로 설정"했다는 의미입니다. 그런데, 객체를 생성할때, 첫번째 사진처럼 data필드를 아예null로 설정해버렸기 때문에 nullpointerexception에러가 발생하는 것이다. 해결방법 두가지. 또는, 1번 방법은, data..
Jasypt jasypt는
@ColumnDefault로 이미지 넣기? @ColumnDefault는 jpa에서 지원하는 어노테이션은 아님. 이것은 DDL(data definition language)생성을 위해 사용된다. 즉, 구조..까지만 설정해준다는 것 같음.