Spring
-
[Spring MVC] 로그인 처리 - 쿠키, 세션Spring/Spring MVC 2021. 7. 20. 13:14
v1 SessionManager 객체 사용 로그인 : SessionManager 클래스 객체를 생성하여 세션 생성하여 저장하고 쿠키 전달 sessionManager.createSession(loginMember, response); 로그아웃 : 세션저장소에서 세션 삭제 sessionManager.expire(request); v2 HttpSession 객체 사용 로그인 : HttpSession 객체를 생성하여 세션 저장하고 쿠키 전달 HttpSession session = request.getSession(); session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 로그아웃 : 세션 삭제 session.invalidate(); v3 @SessionA..
-
[Spring MVC] 검증 - Bean ValidationSpring/Spring MVC 2021. 7. 18. 14:58
대부분의 검증 로직은 매우 일반적인 경우가 많다 따라서 이러한 검증 기술들을 모든 프로젝트에 적용할 수 있게 공통화하고 표준화 한 것이 바로 Bean Validation이다 이러한 Bean Validation을 사용하려면 spring-boot-starter-validation 의존관계를 추가해야 한다 의존관계를 추가하면 스프링 부트는 자동으로 글로벌 Validator(LocalValidatorFactoryBean)를 등록한다 검증 순서 1. @ModelAttribute 각각의 필드에 타입 변환을 시도한다 1.1 실패할 경우 - typeMismatch FieldError를 BindingResult에 추가한다 2. 글로벌 Validator 실행 BeanValidation 메시지 찾는 순서 1. Message..
-
[Spring MVC] 검증 - Spring 순수 ValidationSpring/Spring MVC 2021. 7. 18. 13:59
Validation V1 입력값 에러를 처리하기 위해 컨트롤러에 검증로직을 추가하였다 만약 에러가 발생하면 이를 HashMap에 저장하고 Model에 담아 뷰로 전달한다 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { errors.put("globalError", "가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = " + resultPrice); } } 전체 오류 메시지 Validation V2 Spring은 에러를 저장하는 BindingResult객체를 제공한다 이 객체는 Fie..
-
[Spring MVC] 메시지, 국제화 기능Spring/Spring MVC 2021. 7. 18. 11:35
여러 웹 페이지에서 공통된 기준으로 반복해 사용하는 문구들을 메시지라고 한다 스프링은 이러한 메시지들을 일괄적으로 관리하고, 더 나아가서 언어별로 관리할 수 있도록 기능들을 제공한다 메시지 관리 기능을 사용하려면 MessageSource라는 빈을 등록해야 하는데 스프링 부트를 사용하면 자동으로 스프링 빈으로 등록해준다 타임리프에서 이러한 메시지 기능을 사용하려면 메시지 표현식 #{...} 을 사용하면 된다 메시지 사용 전 메시지 사용 후 상품 등록 폼 상품 등록
-
[Spring JPA] 엔티티 매핑Spring/Spring JPA 2021. 6. 18. 17:24
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리한다 속성 : name JPA에서 사용할 엔티티 이름을 지정한다 같은 클래스 이름이 없으면 가급적 기본값을 사용한다 @Table @Table은 엔티티와 매핑할 테이블을 지정한다 속성 : name 매핑할 테이블의 이름을 지정한다 속성 : catalog 데이터베이스 catalog 매핑 속성 : schema 데이터베이스 schema 매핑 속성 : uniqueConstraints DDL 생성 시 유니크 제약 조건 생성 필드와 컬럼 매핑 @Column 필드와 매핑할 테이블의 컬럼을 매핑한다 기본값으로 필드의 이름을 사용한다 @Enumerated 자바의 enum 타입을 매핑할 때 사용한다 ORDINAL 대신에 STRING을 사용해야 한다 ..
-
[Spring JPA] 영속성 컨텍스트의 특징Spring/Spring JPA 2021. 6. 14. 18:36
1. 1차 캐시 기능 다음과 같이 Member 객체를 생성하고 persist했다고 가정해보자 // 객체 생성 Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); // 객체 영속화 em.persist(member); 영속성 컨텍스트가 flush되기 전까지는 다음과 같은 상태를 유지한다 만약 이 상태에서 다음과 같이 객체를 조회한다면 DB에 쿼리를 날리지 않고 바로 조회될 것이다 Member findMember = em.find(Member.class. "member1"); 만약 DB에 존재하는 member2를 조회한다면 1차 캐시를 거쳐서 조회될 것이다 Member findMember2 = em.find(Memb..