Spring

· Spring
목차 개요 웹 애플리케이션에서 사용자 인증은 필수적인 요소 중 하나이고 회원 기능이 있다면 회원 식별을 위한 인증절차는 필수적이다. 따라서 이번 블로그 포스팅에서는 Spring Security에서 사용자 인증 정보를 얻어오는 두 가지 주요 방법, `Principal`과 `SecurityContextHolder`의 차이점에 대해 살펴보겠다. SecurityContextHolder 개요 Spring Security는 웹 애플리케이션에서 보안(인증 및 권한 관리)을 다루는 데 사용되는 프레임워크이다. 보안 컨텍스트는 `SecurityContextHolder`를 통해 관리되며, 현재 인증된 사용자는 `Principal` 또는 `Authentication` 객체를 통해 나타낼 수 있다. Servlet Authen..
· Spring
목차 개요 제목 정하기가 무척이나 어려웠다. 문제를 해결하고 보니 복합적인 문제였기 때문이다. 최종적으로 본 포스팅에서 다룰 내용은 다음과 같다. 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를 매핑하려고 했다. 이..
· Spring
목차 개요 JPA에서 중요한 주제 중 하나인 FetchType에 대해 이야기해보려고 한다. FetchType은 데이터베이스에서 엔티티를 조회할 때 연관된 엔티티를 언제 로드할 것인지 결정하는 로딩 전략으로 EAGER와 LAZY라는 두 가지 전략이 있는데 각 전략에 대해서 예시를 통해 어떤 환경에 쓰여야하는지 확인해보자 FetchType.EAGER EAGER 로딩 전략은 한 엔티티가 로드될 때 관련된 모든 엔티티를 함께 로드하는 방식 사용자의 역할(User Role)과 같이 사용자 정보를 불러올 때마다 빈번하게 사용하는 정보의 경우 유용하게 사용됩니다. 예를 들어, 대부분의 웹 서비스에서는 일반 사용자와 관리자의 권한 차이로 인해 사용자가 수행할 수 있는 동작이 달라진다. 이런 경우, 사용자가 로그인하거나..
· Spring
목차 개요 본격적으로 코드 작성을 해보자 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 정보전달만의 기능을..
· Spring
목차 개요 프로젝트를 진행하던 도중 JPA를 사용하여 Java 엔티티 클래스를 구성하고 있었는데 그중 @Column 애노테이션을 이용하여 기본값(default value) 설정을 진행하였지만 새 인스턴스를 생성하고 DB 내부를 확인해보니 설정하였던 디폴트값이 적용되지 않았기에 글을 써보게 되었다. 문제 상세분석 'FavoriteDepartment' 라는 클래스에서 회원들이 즐겨찾기한 기관 및 학과를 저장할때 저장 시에 팝업알림의 유무를 특정 필드isAlert을 통해 구현하고자 했다. 따라서 애너테이션을 이용해 기본값으로 `true`를 갖도록 설정하려고 했다. 이러한 설정을 통해 기대했던 동작은 FavoriteDepartment 인스턴스를 생성하면서 isAlert 필드가 자동적으로 true로 설정되는 것이..
· Spring
목차 개요 프로젝트를 진행하다보면 데이터베이스와의 상호작용에서 일시적인 필드를 사용해야 하는 경우가 종종 있다. 이런 경우에 단순한 작업의 경우에는 @Transient 어노테이션을 사용하여 필드를 영속성 컨텍스트에서 제외시킬 수 있다. 이 포스팅에서는 처음에 @Transient 어노테이션을 사용하여 구현하는 원리를 설명한 후, 나중에 Data Transfer Object(DTO)를 사용하여 레이어를 분리하는 방법에 대해 설명하고 그에 따른 장단점을 설명하겠다. @Transient 어노테이션을 사용한 구현 @Transient 어노테이션은 JPA에서 사용되며, 클래스의 필드를 영속성 컨텍스트에서 제외시켜서 해당 필드는 데이터베이스에 저장되지 않고, 데이터베이스로부터 로드되지도 않게된다. 위의 코드에서는 Bu..
nstgic3
'Spring' 카테고리의 글 목록