4. 검증 1 - Validation
·
Spring/MVC 2
1. 과거 프로젝트 build.gradle 오류1) jdk 17 버전 수정https://www.inflearn.com/questions/1232895/no-matching-variant-%EC%98%A4%EB%A5%98  2) gradle 버전 수정[gradle-wrapper.properties]distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zipzipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/dists   2. 검증 요구사항[상품등록]1) 타입 검증      → 가격..
3. 메시지, 국제화
·
Spring/MVC 2
CSR의 경우, '메시지'와 '국제화' 같은 기능들은 클라이언트 개발자가 구현한다.추후에 SSR 프로젝트에서 관련 기능이 필요할 때 자세히 정리하려 한다.😴 +. '메시지'는 검증 단계에서 에러를 바인딩 할 때, 각 단계마다 세부적인 메시지를 주고 싶을 때 사용할 수 있다.
2. 타임리프 - 스프링 통합과 폼
·
Spring/MVC 2
추후에 Thymeleaf가 필요할 때 자세히 공부하고 정리하려 한다.😴
1. 타임리프 - 기본 기능
·
Spring/MVC 2
1. 타임리프 특징 1) 서버 사이드 HTML 렌더링(SSR): 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. 2) 네츄럴 템플릿: 웹 브라우저에서 파일을 열어도, 순수 HTML을 최대한 유지하는 특징이 있다.물론 위 경우에는 동적으로 결과가 렌더링 되지는 않는다. 3) 스프링 통합 지원: 스프링에서 공식으로 추천하고 있는 템플릿 엔진으로, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다.   2. escape'cf. HTML 엔티티 : '  escape가 필요한 이유: 웹 애플리케이션에서 사용자의 입력을 그대로 HTML 페이지에 반영할 경우,악의적인 스크립트를 삽입하는 XSS(Cross Site Scripting) 공격을 받을 수 있다.따라서 이러한 공격을 방지하기 위해 사용자 입..
7. Projections
·
Spring/Spring Data Jpa
1. Projections 장점 : jpql select 최적화 + dto 조회 그러나 실무의 복잡한 쿼리를 해결하기에는 한계가 있다. 단순한 쿼리일 때만 사용하고, 중첩 구조와 같이 복잡해지면 QueryDSL을 사용하는 것이 좋다. 1) 인터페이스 기반 interface의 구현체를 spring data jpa가 제공한다. public interface UsernameOnly { // open projection : entity 전체를 가지고 와서, 원하는 데이터를 넘긴다. (jpql select 최적화 X) // close projection : 원하는 데이터 값만 fit 하게 가지고 온다. @Value("#{target.username + ' ' + target.age}") String getUser..
6. 스프링 데이터 JPA 분석
·
Spring/Spring Data Jpa
1. persist 와 merge save : 엔티티를 새로 저장하거나 변경 사항을 업데이트 한다. persist : 새로운 엔티티 객체를 영속성 컨텍스트에 추가한다. merge : 준영속 상태(detached)의 엔티티 객체를 받아 영속 상태로 전환한다. 여기서 준영속 상태는 엔티티가 현재 세션의 영속성 컨텍스트에 속하지 않는 상태를 의미한다. 즉, 데이터베이스에는 존재하지만 현재 세션에서는 관리되지 않는 상태이다. 2. Spring Data JPA에서의 동작 방식 Entity ID(식별자) 생성 전략 1) @GenerateValue : 호출 시점에 식별자가 없으므로 새로운 엔티티로 인식해서 persist가 정상 동작한다. 2) 직접할당 : 이미 식별자 값이 있는 상태로, merge가 호출된다. DB에..