목차 개요 웹 애플리케이션에서 사용자 인증은 필수적인 요소 중 하나이고 회원 기능이 있다면 회원 식별을 위한 인증절차는 필수적이다. 따라서 이번 블로그 포스팅에서는 Spring Security에서 사용자 인증 정보를 얻어오는 두 가지 주요 방법, `Principal`과 `SecurityContextHolder`의 차이점에 대해 살펴보겠다. SecurityContextHolder 개요 Spring Security는 웹 애플리케이션에서 보안(인증 및 권한 관리)을 다루는 데 사용되는 프레임워크이다. 보안 컨텍스트는 `SecurityContextHolder`를 통해 관리되며, 현재 인증된 사용자는 `Principal` 또는 `Authentication` 객체를 통해 나타낼 수 있다. Servlet Authen..
목차 개요 제목 정하기가 무척이나 어려웠다. 문제를 해결하고 보니 복합적인 문제였기 때문이다. 최종적으로 본 포스팅에서 다룰 내용은 다음과 같다. 1. Spring boot JPA 스키마 생성 옵션 (create, create-drop, update .. 등등) 2. 엔티티간 관계 정의(@JoinColumn 오버라이드 옵션 사용) 3. JPA Hibernate 컬럼 명명 전략 4. MySQL workbench 내 FK 설정법 5. SQL Error :1146, SQLState: 42S02/ SQL Error:1054, SQLState: 42S22 6. Unknown column ~ in 'field list' 초기 문제 분석 Member 엔티티에 OneToMany 관계로 Event를 매핑하려고 했다. 이..
목차 개요 리얼포스 3가 출시되었을때 사려고 고민중이던 브랜드였어서 바로 사려했으나 블루투스 버전 디자인이 크게 마음에 들지 않았었다.. 이후에 22년 6월 말쯤 3s가 출시되었고 10월에 생일 기념으로 R3SD11 버전을 구매했다! 원래 받자마자 개봉기도 쓰려했지만 미루다보니 여기까지 오게 되었다ㅋㅋㅋㅋ 가격은 해외직구로 29만원 정도에 구입했었다. 현재는 네이버 스토어에 26언저리에 올라와있던데 환율+관세 생각하면.. 크게 가슴아파하지 않아도된다. 개봉기 및 전용프로그램 후기 이외에도 매크로나 fn 키를 이용해서 여러 키를 매핑할수 있는데 처음에는 해피해킹처럼 화살표를 ㅓㅏㅣㅑ에 매핑해서 쓰다가 노트북하고 교차하면서 쓰다보니 혼란스러워서 원래 설정으로 돌아왔다. 그리고 한참 프로젝트 할때만 단축키를 ..
목차 개요 JPA에서 중요한 주제 중 하나인 FetchType에 대해 이야기해보려고 한다. FetchType은 데이터베이스에서 엔티티를 조회할 때 연관된 엔티티를 언제 로드할 것인지 결정하는 로딩 전략으로 EAGER와 LAZY라는 두 가지 전략이 있는데 각 전략에 대해서 예시를 통해 어떤 환경에 쓰여야하는지 확인해보자 FetchType.EAGER EAGER 로딩 전략은 한 엔티티가 로드될 때 관련된 모든 엔티티를 함께 로드하는 방식 사용자의 역할(User Role)과 같이 사용자 정보를 불러올 때마다 빈번하게 사용하는 정보의 경우 유용하게 사용됩니다. 예를 들어, 대부분의 웹 서비스에서는 일반 사용자와 관리자의 권한 차이로 인해 사용자가 수행할 수 있는 동작이 달라진다. 이런 경우, 사용자가 로그인하거나..
목차 개요 본격적으로 코드 작성을 해보자 Entity - 유저 클래스 카피를 위한 코드링크 GitHub - Apptive2022-1/apptive-18th-team4-backend: Customized services with the information & schedules and Finding nearest empt Customized services with the information & schedules and Finding nearest empty office location to user - GitHub - Apptive2022-1/apptive-18th-team4-backend: Customized services with the informat... github.com 정보전달만의 기능을..
목차 개요 프로젝트를 진행하던 도중 JPA를 사용하여 Java 엔티티 클래스를 구성하고 있었는데 그중 @Column 애노테이션을 이용하여 기본값(default value) 설정을 진행하였지만 새 인스턴스를 생성하고 DB 내부를 확인해보니 설정하였던 디폴트값이 적용되지 않았기에 글을 써보게 되었다. 문제 상세분석 'FavoriteDepartment' 라는 클래스에서 회원들이 즐겨찾기한 기관 및 학과를 저장할때 저장 시에 팝업알림의 유무를 특정 필드isAlert을 통해 구현하고자 했다. 따라서 애너테이션을 이용해 기본값으로 `true`를 갖도록 설정하려고 했다. 이러한 설정을 통해 기대했던 동작은 FavoriteDepartment 인스턴스를 생성하면서 isAlert 필드가 자동적으로 true로 설정되는 것이..