JAVA

배포된 서비스에서 특정 API가 리다이렉트되고 난 뒤 401 에러가 발생하면서 문제를 일으키게 되었다. 해당 문제에 대해 원인은 발견하고 해결 했지만 무슨 이유로 생기는지 어떻게 해결해야되는지 정리하면 좋을 것 같아서 정리하게 되었다. 문제가 되었던 컨트롤러 @GetMapping("") public void hello(HttpServletRequest request, HttpServletResponse response) throws IOException { String nickname = "riospring"; logging(request); response.sendRedirect("/api/v1/user/" + nickname); } 내가 원했던 API 통신 path variable을 입력하지 않았을 ..
· JAVA/JPA
동일성 보장 영속성 컨텍스트는 자신이 관리하는 영속 엔티티 한에서는 동일성을 보장한다. 프록시로 조회했을 때도 마찬가지다. 예제 @Test public void 영속성_테스트() { Member newMember = new Member("member1"); em.persist(newMember); em.flush(); em.clear(); Member refMember = em.getReference(Member.class, newMember.getId()); Member findMember = em.find(Member.class, newMember.getId()); System.out.println("refMember Type = " + refMember.getClass()); System.out.p..
· JAVA/JPA
JPA는 영속성 컨텍스트 내부에서 1차 캐시를 통해 엔티티를 저장하고 생명주기를 관리한다. 그렇기 때문에 1차 캐시를 통해 데이터의 변경을 감지하고 조회할 때도 데이터베이스를 통해 가져올 필요없이 1차캐시 내부에서 가져와서 사용하게 됩니다. 이러한 장점은 어플리케이션 반복 가능해서 읽기가 가능하게 한다. 덕분에 같은 엔티티를 조회시 데이터 베이스를 통해 다시 가져오거나 컨텍스트에 등록할 필요가 없이 재사용할 수 있다. 동일성 테스트 @Service @Transactional @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; public Long join(Member mem..
· JAVA/JPA
JPA는 여러가지 Exception을 제공한다. 그리고 해당 Exception은 PersistenceException을 상속하기 때문에 모두 PersistenceException의 자식이다. 참고로 PersistenceException은 RuntimeException을 상속하여 정의되었다. Persistence Exception 과 Transaction JPA Exception은 크게 두가지로 나뉠 수 있다. 트랜잭션의 롤백을 표시하는 Exception 트랜잭션의 롤백을 표시하지않는 Exception 트랙잭션을 롤백을 표시한다는 것은 간단하게 말하자면 스프링에서 트랜잭션을 사용하려고할 때 내부 쓰레드가 rollback only mark가 되어있는지 확인하고 안되어 있다면 정상적으로 비지니스 로직을 처리하..
· JAVA/JPA
보호되어 있는 글입니다.
· JAVA/JPA
보호되어 있는 글입니다.
ri5
'JAVA' 카테고리의 글 목록