Spring 13

[Spring Data JPA] 영속성 전이 / 고아 객체

영속성 전이 Cascade - 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션 - 단일 엔티티에 완전히 종속적이고 부모 엔티티와 자식 엔티티의 라이프 사이클이 유사할 때 사용 권장 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List orderItems = new ArrayList(); 고아 객체 Orphan - 부모 엔티티와 연관 관계가 끊어진 자식 엔티티를 삭제함 - 참조하는 곳이 하나인 경우에만 사용 - @OneToOne, @OneToMany @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) pri..

[Spring Security] Form Login

Form Login Spring Security에서 제공하는 로그인 관련 설정 ● .usernameParameter: 사용자 계정의 파라미터 명 (기본값은 username) ● .passwordParameter: 비밀번호의 파라미터 명 (기본값은 password) ● .loginPage : 로그인 페이지 주소 ● .loginProcessingUrl: 로그인 Form Action Url을 지정할 수 있다. (기본값은 /login) ● .defaultSuccessUrl: 로그인 성공 후 자동으로 이동할 페이지 (최후순위) -> 무조건 URL로 이동하려면 true를 인자로 주면 됨 ("/home", true) -> 또 다른 방법: .successHandler에서 send.redirect 나 requestCac..

[Spring Security] UserDetails / UserDetailsService

UserDetails ● Spring Security에서 사용자의 정보를 담는 인터페이스 UserDetailsService ● 사용자 정보를 가져오는 인터페이스 ● 기본 메소드 loadUserByUsername() 메소드를 오버라이딩 package org.springframework.security.core.userdetails; public interface UserDetailsService { UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; } UsernameNotFoundException ● UserDetailService구현이 사용자 이름으로 찾을 수 없는 경우 발생하는 exception Userna..

[Spring Security] Spring Security

Spring Security Java / Java EE 프레임워크 애플리케이션에 대한 인증(Authentication), 권한 부여(Authorization) 및 기타 보안 기능을 제공하는 spring security를 추가하는 것 만으로 모든 요청이 인증을 필요로 하게끔 변경된다 org.springframework.boot spring-boot-starter-security 스프링부트 자동 구성 (bean) - springSecurityFilterChain 이라는 서블릿 필터가 기본적으로 활성화 : 모든 보안을 담당 (URL보호, 계정 및 비밀번호 유효성검사, 로그인 양식 redirect 등) - UserDetailsService 생성 - .springSecurityFilterChain : 모든 요청에..

[Thymeleaf] Thymeleaf (타임리프) - 문법 / 페이지 레이아웃

Thymeleaf ● XML, XHTML 및 HTML5 자바 템블릿 엔진 ● 웹 과 비웹 환경에서 모두 작동 ● Spring Framework에서 사용을 권장하는 템블릿이다. ● 서버 사이드 렌더링 방식 (SSR) ● html 확장자 사용 ● 문법 th:text Hello Thymeleaf! 상품명 : 상품 가격 : th:each th:if & th:unless th:switch & th:case 짝수 홀수 th:href - Absolute URL & Context-relative URL Absolute URL : 'http://' or 'https://' Context-relative URL : 가장 많이 사용하는 방식. 상대경로 예제1 페이지 이동 thymeleaf 공식 페이지 이동 th:href -..

Spring/Thymeleaf 2023.01.30

[Spring Boot] Spring Boot Devtools

Spring Boot Devtools ● Spring Boot에서 제공하는 개발 편의 모듈 ● 의존성 org.springframework.boot spring-boot-devtools · Automatic Restart : classpath에 있는 파일이 변경될 때마다 애플리케이션을 자동으로 restart · Live Reload : 정적자원 수정시 새로고침 없이 바로 적용시켜줌 · Property Defaults : 개발 과정 중에 캐싱기능은 수정한 소스가 반영이 안될 수 있기 때문에 캐시의 기본값을 false로 설정해줌 Automatic Restart 적용하기 1. 소스 수정시 자동으로 빌드가 되도록 설정하기 Setting > Build, Execution, Deployment > Compiler >..

[Spring Data JPA] Page / Pageable / PageRequest

Page / Pageable / PageRequest ● Spring Data JPA에서 제공하는 페이징 관련 인터페이스 ● org.springframwork.data.domain 패키지 (중앙 도메인 Repository 추상화) : Page, Pageable, PageRequest ● Page : 페이지 정보를 담는 인터페이스 - empty(), getTotalElements(), getTotalPages() - API https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Page.html ● Pageable : 페이징 처리하는 인터페이스 - first(), getPageNumber(), ge..

[Spring Data JPA] Repository

Repository - Spring Data JPA에서는 엔티티 매니저를 직접 이용해 코드를 이용하지 않아도 Repository 인터페이스로 만들 수 있다 (Data Access Object (DAO)의 역할) - JpaRepository를 상속받음 * JpaRepository는 2개의 제네릭타입을 사용 : JpaRepository package com.shop.repository; import com.shop.entity.Item; import org.springframework.data.jpa.repository.JpaRepository; public interface ItemRepository extends JpaRepository { } Repository 인터페이스 작성만으로 데이터를 inser..