본문 바로가기

분류 전체보기86

[JPA] 영속성 컨텍스트 영속성 컨텍스트는 Entity를 저장하고 관리하는 논리적인 환경으로 엔티티 매니저를 통해 영속성 컨텍스트에 접근한다. 영속성 컨텍스트의 특징과 이점을 알아보자! 엔티티의 생명주기 비영속(new/transient) - 객체를 생성은 했으나 영속성컨텍스트에서 관리되지 않는 새로운 상태 User user = new User(); user.setName("jang"); user.setAge(29); 영속(managed) - 영속성 컨텍스트에 관리되고 있는 상태로 객체가 생성되어 영속성컨텍스트에 포함되어 있다. User user = new User(); user.setName("jang"); user.setAge(29); EntityManager em = createEntity....(); em.getTransa.. 2022. 8. 9.
[WEB] HTTP 상태코드 HTTP 상태 코드란? 클라이언트가 보낸 요청에 대한 처리 상태를 응답에서 알려주는 코드로 5개그룹으로 나누어져 있다. 만일 신규코드일 경우 그룹의 첫번째 숫자로 판단하기 때문에 그룹의 대표 숫자를 잘 유지해야 한다. 처리결과에 따라 올바른 상태코드를 응답해야 클라이언트가 신뢰하고 사용할 수 있기 때문에 상태 코드를 파악하고 있는 것이 중요하다. 대표적인 상태코드 1xx(Information) 임시적인 응답으로 요청을 받았고 작업을 진행 중임을 알리는 코드로 HTTP 1.0에서 지원하지 않는다. 100 - Continue 진행 중임을 의미하는 응답코드로 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 됨을 알리는 코드 2xx(Successful) 클라이언트의 요청을 성공적으로 처.. 2022. 8. 7.
[SPRING] HttpServletRequest InputStream의 주의사항 Filter에서 요청정보에 대한 로그를 출력하기 위한 작업을 한 후 컨트롤러에서 데이터 매핑이 안 되는 현상이 발생했다. 확인 결과 HttpServletRequest의 InputStream을 읽은 게 화근이었다. 스프링의 컨버터가 요청 Body의 데이터를 읽을 수 없으니 데이터 매핑이 될 수가 없는 것이었다. 사실상 유실이라고 봐야겠다 HttpServletRequest의 InputStream은 한 번 읽으면 다시 읽을수 없다고 한다 - 톰캣의 정책 ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); Ht.. 2022. 8. 1.
[JAVA] Optional 사용법 - 어떻게 사용해야할까 (2/2) Optional의 존재를 알고 이리저리 사용하면서 여러 의문이 들었다. null의 가능성이 있는 곳엔 모두 써줘야 하는 건가? 결국 꺼낼때는 존재 여부를 확인하고 꺼내야 하는데 이럴 거면 Optional을 왜 쓰는가.. 등의 의문이 들어 Optional의 올바른 사용방법에 대해 알아보았습니다. 잘못된 Optional 사용 Optional은 null을 반환하면 에러를 유발할 가능성이 높은 상황에서 '결과 없음'을 명확하게 드러내기 위해 메서드 반환타입으로 사용되도록 매우 제한적으로 설계되었다고 한다. 즉 의도와 맞지않게 사용한다면 부작용이 발생할 수 있다. NullPointerException을 피하려다 NoSuchElementException이 발생 코드의 가독성이 떨어지는 문제 비용 증가로 인한 성능 .. 2022. 7. 28.