전체 글(256)
-
OSIV (Open-(Session)-In-View) 란?
OSIV Hibernate에서는 Open Session In View라 하고, JPA에서는 Open EntityManager In View라 합니다. 관례상 OSIV이라 칭합니다. Session 쿠키, 세션 할 때 그 세션인가요? 아닙니다. DB에 접근할 수 있는 세션입니다. application.yml spring: jpa: open-in-view: true #default open-in-view: true 영속성 컨텍스트가 트랜잭션 범위를 넘어선 레이어까지 살아있습니다. API라면 클라이언트에게 응답될 때까지 View라면 랜더링 될 때까지 영속성 컨텍스트가 살아있습니다. open-in-view: false 트랜잭션을 종료할 때 영속성 컨텍스트가 닫히므로 Lazy loading 또한 할 수 없습니다. ..
2022.12.14 -
[Cinemagram] JPA Native Query 팔로우 구현 및 예외처리 - (6)
팔로우에 대한 코드 구현에 바로 들어가기 앞서 용어 개념 정리부터 하겠습니다.팔로우(Follow) : 내가 특정 유저의 게시물을 구독하겠다. 언팔로우(UnFollow) : 내가 구독한 유저를 더 이상 구독하지 않겠다. 팔로잉(Following) : 특정 유저를 구독하면 팔로잉으로 바뀌는데 현재 내가 이 유저를 구독하고 있다는 의미입니다. 팔로워(Follower) : 나를 구독하고 있는 유저 = 나의 팬 연관관계 매핑1. 다대일, 일대다 관계多쪽이 연관관계 주인으로 외래키(FK)를 관리합니다.주인의 반대편은 단순 조회만 가능합니다. @OneToMany(mappedBy = "")* 만약 一쪽이 FK를 가진다면 정규화의 원자성이 깨지게 됩니다.** 원자성 : 하나의 칼럼에는 하나의 데이터만 들어가야 함( ,..
2022.12.11 -
[Refactoring] Spring Data JPA Auditing - 시간 한 곳에서 관리
리팩토링 하게 된 이유Cinemagram 토이 프로젝트를 하면서 엔티티마다 데이터의 생성시간, 수정시간이 칼럼으로 존재합니다. private LocalDateTime createDate;@PrePersist // DB에 insert되기 전 실행public void createDate() { this.createDate = LocalDateTime.now();} 지금은 User, Follow 두 엔티티만 있지만 앞으로 더 늘어날 텐데 그럼 불필요하게 코드 중복이 발생합니다. Spring Data JPA의 Auditing 사용하기 1. domain 패키지 안에 BaseTimeEntity abtract calss 생성@Getter@MappedSuperclass@EntityListeners(Auditin..
2022.12.11 -
[Cinemagram] 회원 정보 수정, 필수 값 유효성 검사 및 예외처리 - (5)
이전 포스팅에서 세션을 생성하고 세션을 사용하기 전 어디에 있는지 확인하는 절차까지 하였습니다. 이번 포스팅에서는 세션을 사용하여 회원정보 변경을 해보겠습니다. (user/update) 회원정보 변경 버튼 클릭 시 나오는 화면입니다. input 정보는 update.html valule에 적어둔 내용입니다.우리는 우선 input태그에 세션 정보가 나오면 됩니다. 말로 먼저 말씀드리고 실습 코드로 넘어가겠습니다. 세션 정보가 어디있나?UserController customUserDetails에 있습니다.그럼 이 세션 정보를 어떻게 user/update.html에 넘길 수 있나?Model에 담아서 넘길 수 있습니다. 코드로 살펴보겠습니다.UserController@Controllerpublic class U..
2022.12.11 -
[Trouble Shooting] ExceptionHanlder 예외처리를 통한 원하는 메세지 출력
Cinemagram 토이 프로젝트를 하다 ExceptionHanlder 예외처리를 통한 메시지 출력 부분에서 에러가 발생했습니다.해당 부분이 발생한 이유와 해결해나가는 과정을 간단히 정리해보려합니다. 구현하고 싶은 내용과 예상 결과회원가입하지 않은 사용자*가 회원정보 변경을 하고 제출 버튼을 클릭을 시Exception이 터지면 ExceptionHandler가 낚아채서 처리결과적으로 "해당 유저를 찾을 수 없습니다." 메세지를 alert 띄웁니다.* id = 100을 임의로 기입함** CustomValidationApiException : 직접 만든 + 유효성 관련 + API 통신 시 사용할 + Exception*** ControllerExceptionHandler : Controller에서 터지는 ..
2022.12.11 -
[Cinemagram] 로그인(Spring Security - session 생성) - (4)
저번 포스팅에서 말씀드린 것처럼 유효성 검사에 실패할 시 화면에 Json 코드를 보여주는 게 아닌 간단하게 팝업 처리를 한 뒤 로그인 구현으로 넘어가도록 하겠습니다. 팝업 처리는 자바스크립트로 진행할 예정이며 별로 중요한 부분이 아니므로 바로 로그인 구현으로 넘어가셔도 괜찮을 것 같습니다. Popuppackage com.photo.util;public class Popup { public static String historyBack(String msg){ StringBuffer sb = new StringBuffer(); sb.append(""); return sb.toString(); }} Script코드를 짤 때 StringBuffer클래스를 이용했습..
2022.12.07