분류 전체보기(255)
-
[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 -
Python 엑셀 프로그래밍 - with xlsxwriter
이전까지 Python 기본 문법을 학습하고 공공데이터를 받아 가공해서 지도와 결합하는 실습도 해보았습니다. 제가 생각할 때 Python은 데이터 가공에 특화된 언어라고 생각하는데요, 그래서 이번 포스팅에서는 xlsxwriter 라이브러리를 이용해서 row데이터를 읽은 후 데이터 가공을 해보려 합니다. 우선 생소한 개념인 xlsxwriter부터 짚어보겠습니다. xlsxwriter란? 텍스트, 숫자 및 수식을 여러 워크시트에 입력하는 데 사용할 수 있으며, 서식, 이미지, 차트, 페이지 설정, 자동 필터, 조건부 서식 및 기타 여러 기능을 지원하는 모듈(라이브러리)입니다. 다른 모듈에 비해 다양한 기능을 지원하고 빠른 속도와 적은 메모리를 사용하는 장점이 있습니다. Excel과 xlsxwriter의 구성 E..
2022.11.30