2024/04 3

[Spring-Boot] 세션 URL 리라이팅 해결 방법 /;jsessionid=

SSR 방식으로 프로젝트를 진행하고 있어서 토큰 방식을 사용하지 않고 세션 방식으로 로그인을 구현 해두었는데, 로그인이 완료되면 게시글이 조회되지않고 http://localhost:8080/;jsessionid=F59911518B921DF62D09F0DF8F83F872 이런 url로 리라이팅이 되는 현상을 발견했다. 이유를 알아보았는데, 로그인을 처음 시도하면 URL을 위와 같이 jsessionid를 포함하여 보내게 된다. - 웹 브라우저가 쿠키를 지원하지 않을 때, 쿠키 대신 URL을 통해서 세션을 유지하는 것 - 사용하려면 URL에 이 값을 계속 포함하여 전달 해야 한다. 🔎 URL 전달 방식 끄기 옵션 application.properties server.servlet.session.tracking..

Spring-Boot 2024.04.15

[JPA] [Trouble Shooting] 에러 Cannot delete or update a parent row: a foreign key constraint fails 참조 무결성 제약 조건 ON DELETE CASCADE

글 작성을 한 후, 댓글이 달려있는 상태에서 글 삭제 테스트를 하던 중 이런 에러를 보았다. 더보기 Cannot delete or update a parent row: a foreign key constraint fails (`learningmate`.`tb_reply`, CONSTRAINT `FKsxgehpxyljiiatkcutvuahw13` FOREIGN KEY (`board_no`) REFERENCES `tb_board` (`board_no`)) 일단 에러가 발생한 이유는 ✓ 데이터 삭제 시 해당 테이블에 연관관계가 설정 되어 있기 때문에 부모를 삭제 할 경우 부모 엔티티를 참조하는 자식 엔티티가 불안정한 상태가 되어 사전에 방지해주기 위해 에러가 발생하는 것이다. Trouble Shooting! ..

JPA 2024.04.13

Spring Data JPA를 활용한 Update 처리(변경감지, 더티체킹)

최근 Spring Data JPA를 사용하며 SSR 방식으로 개발중이다. 게시글 정보를 수정하는 Update 로직을 처리 하려고 한다 JPA에서 Update 처리 로직을 보기 전에 변경감지(더티체킹)이 뭔지 알아보자 더티체킹이란? Transaction안에서 엔티티의 변경이 일어나면 변경내용을 자동으로 데이터베이스에 반영하는 JPA 특징이다. 게시글을 관리하는 BoardService의 updateBoard 메서드이다. 우리가 생각하는 JPA를 활용한 쿼리 처리는 JPARepository를 상속받고 있는 boardReporitory 인터페이스에서 JPA에서 제공해주는 기본 메서드인 findAll(), deleteById() 등 이런 메서드를 사용하여 update도 똑같이 처리를 할거라고 생각하겠지만, 소스를..

Spring-Boot 2024.04.13