@Entity해당 클래스가 엔티티임을 나타냅니다.엔티티 클래스는 반드시 기본 생성자가 있어야 합니다.@Table엔티티와 매핑될 데이터베이스 테이블을 지정합니다.name, schema, catalog, uniqueConstraints 등의 옵션을 제공합니다.@Id엔티티의 기본 키(Primary Key)를 지정합니다.@GeneratedValue기본 키 값의 자동 생성 전략을 지정합니다.IDENTITY, SEQUENCE, TABLE, AUTO 등의 전략을 사용할 수 있습니다.@Column엔티티 필드와 데이터베이스 컬럼을 매핑합니다.name, nullable, unique, length, precision, scale 등의 옵션을 제공합니다.@Temporal날짜/시간 타입 필드를 지정합니다.TemporalTyp..
RegistrationRegistration (클라이언트 등록)OAuth2 인증 프로세스를 사용하기 위해서는 먼저 클라이언트 애플리케이션을 등록해야 합니다.클라이언트 등록 시 필요한 정보Client ID: 클라이언트를 식별하는 고유한 IDClient Secret: 클라이언트 인증을 위한 비밀 키Redirect URI: 인증 완료 후 리디렉션될 URL권한 범위(Scope): 클라이언트가 요청할 수 있는 권한 범위클라이언트 등록은 일반적으로 OAuth2 Provider 측에서 제공하는 관리 콘솔이나 API를 통해 이루어집니다.ProviderProvider (인증 서버 구현)OAuth2 Provider는 인증 서버 역할을 수행하며, 다음과 같은 기능을 구현해야 합니다클라이언트 인증: 등록된 클라이언트 ID와 ..
MustacheMustache는 논리 없는 템플릿 엔진(logic-less template engine)으로, 다양한 프로그래밍 언어에서 사용되는 템플릿 시스템입니다. Mustache는 데이터와 프레젠테이션을 분리하는 것을 목표로 하며, 템플릿 내에 복잡한 로직을 포함하지 않습니다.논리 없는 템플릿: Mustache 템플릿에는 조건문, 반복문 등의 복잡한 로직이 포함되지 않습니다. 대신 데이터 바인딩, 섹션, 부분 템플릿 등의 기능을 제공합니다.다양한 언어 지원: Mustache는 JavaScript, Ruby, Python, Java, C++, PHP 등 다양한 프로그래밍 언어에서 구현되어 있어 언어 간 호환성이 높습니다.간단한 문법: Mustache 문법은 매우 간단하며, 중괄호 {{}} 기호를 사용..
@EnableWebSecurity@EnableWebSecurity 어노테이션은 Spring Security 프레임워크에서 제공하는 어노테이션으로, 웹 보안 기능을 활성화하는 데 사용됩니다.WebSecurityConfigurerAdapter 구현 활성화@EnableWebSecurity 어노테이션을 사용하면 WebSecurityConfigurerAdapter 인터페이스를 구현한 클래스가 자동으로 감지됩니다. WebSecurityConfigurerAdapter는 웹 보안 구성을 정의하는 데 사용되는 추상 클래스입니다.스프링 시큐리티 필터 체인 활성화@EnableWebSecurity 어노테이션을 사용하면 스프링 시큐리티 필터 체인이 자동으로 활성화됩니다.이 필터 체인은 웹 요청에 대한 보안 처리를 수행합니다.스..
HttpSecurityHttpSecurity는 Spring Security 프레임워크에서 제공하는 클래스로, HTTP 보안 구성을 정의하는 데 사용됩니다. 이 클래스를 통해 웹 애플리케이션의 보안 정책을 설정할 수 있습니다.URL 기반 보안 설정: HttpSecurity를 사용하여 특정 URL 패턴에 대한 접근 권한을 설정할 수 있습니다. 예를 들어, /admin/** 경로에 대해서는 ADMIN 권한이 필요하도록 설정할 수 있습니다.인증 및 권한 설정: HttpSecurity를 통해 사용자 인증 방식과 권한 부여 정책을 구성할 수 있습니다. 예를 들어, 폼 기반 인증, OAuth2, JWT 토큰 기반 인증 등 다양한 인증 방식을 설정할 수 있습니다.CSRF 보호, XSS 보호 등보안 기능 설정: Http..
Create (저장)save(entity): 새로운 entity를 저장하거나 기존 entity를 업데이트합니다.Read (조회)findById(id): 주어진 ID로 entity를 조회합니다.getOne(id): 주어진 ID로 entity를 지연 로딩(lazy loading)합니다.findAll(): 모든 entity를 조회합니다findAll(pageable): 페이징 처리된 entity 목록을 조회합니다.findAllById(iterable): 주어진 ID 목록으로 entity 목록을 조회합니다.existsById(id): 주어진 ID의 entity가 존재하는지 확인합니다.Update (수정)save(entity): 새로운 entity를 저장하거나 기존 entity를 업데이트합니다.Delete (삭제)..
SortSort는 엔티티 데이터를 정렬하는 기능입니다. Sort를 사용하면 엔티티를 특정 기준으로 정렬하여 반환할 수 있습니다.Sort를 사용하는 이유데이터 정렬: 엔티티 데이터를 특정 기준(예: 이름, 가격, 등록일 등)으로 정렬하여 반환가능사용자 경험 향상: 정렬된 데이터를 사용자에게 제공데이터 처리 효율성: 정렬된 데이터를 사용하면 추가적인 정렬 작업 없이 데이터를 처리import org.springframework.data.domain.Sort;import org.springframework.data.jpa.repository.JpaRepository;// 엔티티 클래스@Entitypublic class Product { @Id @GeneratedValue(strategy = Gener..
JPA는 자바에서 사용하는 ORM 기술 표준으로 자바 애플리케이션과 JDBC 사이에 동작을 하고, 자바 인터페이스로 정의가 되어있습니다. 여기서 ORM은 객체의 관계 매핑을 뜻하는데, 말그대로 객체와 관계형 데이터베이스의 데이터를 매핑하는 기술로써 그 사이에서 매핑을 하는 역할을 합니다. 사용하는 이유로는 기존 개발은 SQL중심의 개발이었으나 JPA를 통해서 객체 중심으로 애플리케이션 개발이 가능해졌다는 것입니다. 또한 엔티티 클래스 필드가 변경되면 모든 SQL을 수정하여야 했으나 JPA에서는 쿼리를 직접적으로 작성하지 않기 때문에 필드의 변경이 있더라도 매핑 정보만 잘 연결한다면 SQL문을 자동으로 작성해줍니다. 더해서 CRUD에 있어서 생선성 또한 높아지고, 상속, 연관관계, 객체나 비교 등의 설계차..
WebMvcConfigurerSpring MVC 애플리케이션의 구성을 커스터마이징하기 위해 사용되는 인터페이스입니다. 이 인터페이스를 구현하여 다양한 Spring MVC 설정을 오버라이드할 수 있습니다.사용 이유URL 매핑 설정: 애플리케이션의 URL 매핑을 커스터마이징할 수 있습니다.뷰 리졸버 설정: 뷰 리졸버의 설정을 변경할 수 있습니다.리소스 핸들러 설정: 정적 리소스(CSS, JavaScript, 이미지 등)의 처리 방식을 변경할 수 있습니다.인터셉터 등록: 요청 전/후에 실행될 인터셉터를 등록할 수 있습니다.포맷터 및 컨버터 등록: 데이터 포맷팅 및 변환을 위한 포맷터와 컨버터를 등록할 수 있습니다.import org.springframework.context.annotation.Configur..