프레임워크

    JPA 에서 LocalDateTime 사용하기

    JPA 에서 LocalDateTime 사용 JPA 2.2 버전부터 공식지원 그 이전 버전은 추가적인 애노테이션이나 컨버터를 만들어야 함 컨버터 구현 import java.time.LocalDateTime; import java.sql.Timestamp; import javax.persistence.AttributeConverter; import javax.persistence.Converter; @Converter(autoApply = true) // If autoApply is set to true, the converter will be applied to all mapped attributes of the type and all parameters and results of queries that ..

    왜 @Entity 는 인수가 없는 생성자가 필요하고 final 이면 안되는가?

    @Entity 애노테이션이란? 클래스를 엔티티로 표시하는 데 사용되는 JPA 의 핵심 측면(aspect)이다. 클래스 하나는 관계형 데이터베이스의 테이블 하나를 나타내며 엔티티의 각 인스턴스는 테이블의 행에 해당한다. 문법 @Entity public class MyEntity { // Fields, constructors, getters, and setters } 용도 @Entity 라는 애노테이션을 붙이는 것은 해당 클래스가 영속성 컨텍스트에 의해 관리되어야 한다는 것을 말한다. 해당 클래스가 데이터베이스 테이블에 매핑될 것임을 JPA 에 알리는 것을 말한다. 요구사항 클래스가 엔티티가 되려면 몇가지 요구사항을 충족해야 한다. public 혹은 protected 접근자의 no-argument 생성자가 ..

    @Entity 애노테이션이란?

    @Entity 애노테이션이란? 클래스를 엔티티로 표시하는 데 사용되는 JPA 의 핵심 측면(aspect)이다. 클래스 하나는 관계형 데이터베이스의 테이블 하나를 나타내며 엔티티의 각 인스턴스는 테이블의 행에 해당한다. 문법 @Entity public class MyEntity { // Fields, constructors, getters, and setters } 용도 @Entity 라는 애노테이션을 붙이는 것은 해당 클래스가 영속성 컨텍스트에 의해 관리되어야 한다는 것을 말한다. 해당 클래스가 데이터베이스 테이블에 매핑될 것임을 JPA 에 알리는 것을 말한다. 요구사항 클래스가 엔티티가 되려면 몇가지 요구사항을 충족해야 한다. public 혹은 protected 접근자의 no-argument 생성자가 ..

    @SecondaryTables 애노테이션이란?

    @SecondaryTables 애노테이션이란? 한글로 번역하면 보조 테이블들 이라는 의미이다. 특정한 엔티티에 관련된 추가적인 테이블을 명시하는데 사용되는 JPA 애노테이션이다. 엔티티의 데이터가 2개 이상의 테이블에 분산되고 해당 엔티티를 모든 테이블에 매핑하려는 경우에 사용된다. 간단 사용법 @SecondaryTables({ @SecondaryTable(name="table_name", pkJoinColumns=@PrimaryKeyJoinColumn(name="column_name")), // ... other secondary tables ... }) 속성 (Attributes) name: 보조 테이블의 이름 catalog (Optional): 테이블의 카탈로그. 기본 값은 빈 문자열이다. sche..

    @AutoConfigureTestDatabase 애노테이션이란?

    @AutoConfigureTestDatabase 애노테이션이란? 이름처럼 Test DB 를 구성할 때 유용한 애노테이션이다. 테스트 시 DB 를 테스트 DB 로 대체할 수 있다. 참고 애노테이션 내부 구현을 보면 @PropertyMapping("spring.test.database") 라고 된 부분이 있는데, 이 부분이 test DB 를 사용하도록 세팅하는 부분이다. @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @ImportAutoConfiguration @PropertyMapping("spring.test.database") public @interfac..

    @MockBean 애노테이션이란?

    @MockBean 이란? 특정 빈을 테스트에서 의존하지 않도록 가짜 빈을 생성해준다. 서비스 계층 코드 서비스 계층 코드를 테스트 하는데 persistence 레이어의 구현은 관심사가 아니다. 아래의 코드를 어떻게 테스트할 수 있을까? @Service public class EmployeeServiceImpl implements EmployeeService { @Autowired private EmployeeRepository employeeRepository; @Override public Employee getEmployeeByName(String name) { return employeeRepository.findByName(name); } } @MockBean 이용하기 EmployeeReposit..

    @TestConfiguration 애노테이션이란?

    @TestConfiguration 애노테이션이란? 애플리케이션 컨텍스트에서 특정 Bean 을 대체하고 싶을 때 사용한다. 실제 Application Context 를 부트스트랩하지 않고 특별한 테스트 Configuration 을 이용하고 싶을 때 사용한다. 사용 방법 사용 방법은 2가지가 있다. static class 이용하기 @RunWith(SpringRunner.class) public class EmployeeServiceImplIntegrationTest { @TestConfiguration static class EmployeeServiceImplTestContextConfiguration { @Bean public EmployeeService employeeService() { return n..

    @DataJpaTest 애노테이션이란?

    @DataJpaTest 애노테이션이란? JPA 컴포넌트에 대한 테스트에만 초점을 맞춘 애노테이션이다. 리포지토리 계층에 대한 격리된 테스트 환경을 설정하는데 유용하다. full auto-configuration 이 비활성화되고 대신 JPA 테스트와 관련된 configuration 만 활성화된다. full application context 를 로드하기 싫을 때 유용하다. @DataJpaTest 를 사용하면 각 테스트가 트랜잭션이 되고 테스트가 끝날 때 롤백된다. 임베디드 인메모리 데이터베이스를 사용한다. @AutoConfigurationTestDatabase 애노테이션을 이용해 이 설정을 재정의(override) 할 수 있다. SQL 쿼리는 기본적으로 spring.jpa.show-sql 속성을 true ..

    Spring Boot Configuration Processor 란?

    Spring Boot Configuration Processor 란? Configuration 메타데이터를 처리하는데 도움을 주기 위한 도구이다. 프로퍼티의 속성을 수동으로 추적하기 까다롭고 오류가 발생하기 쉬운 대규모 프로젝트에 용이하다. 메타데이터 생성을 자동화함으로써 더 나은 코딩 관행을 장려하고 개발자 생산성을 향상시킨다. 사용하는 이유 우리는 보통 프로퍼티의 값을 설정할 때, 어떤 기능을 하는지, 기본 값이 있는지, 더이상 사용되지 않는지, 속성이 존재하는지조차 모르는 경우가 많다. Spring Boot Configuration Processor 를 통해 이러한 불편함을 해결할 수 있다. IDE 의 자동 완성 (Auto-Completion in IDEs) IDE 는 메타데이터를 제공받음으로써, ..

    @EnableGlobalMethodSecurity 애노테이션이란?

    @EnableGlobalMethodSecurity 애노테이션이란? 메서드 레벨에서 보안을 추가할 수 있는 애노테이션이다. 역할, 권한 혹은 기타 속성 기반으로 개별 메서드를 보호하는데 유용하다. 현시점 (2023년 7월 기준) 의 최신 애노테이션은 @EnableMethodSecurity 애노테이션이다. 둘은 이름이 엄청 비슷한데 다른 애노테이션이므로 주의해야 한다. 공식 문서의 마이그레이션 가이드를 보고 최신으로 마이그레이션을 진행해도 된다. 사용 방법 1. 애노테이션 활성화하기 @Configuration 클래스에 @EnableGlobalMethodSecurity 애노테이션을 추가한다. 2. Security Model 선택하기 @EnableGlobalMethodSecurity 애노테이션은 몇가지 속성을 ..

    @EnableWebSecurity 애노테이션이란?

    @EnableWebSecurity 애노테이션이란? web security 구성정보를 활성화하기 위해 사용된다. 스프링에 인증 및 권한을 제공하는 보안 구성을 적용하도록 신호를 보낸다. 주로 WebSecurityConfigurerAdapter 클래스를 상속하여 사용한다. 기본 보안 설정을 제공하고, 메서드 오버라이딩을 통한 보안 커스터마이징을 제공한다. 인증 (Authentication) 구성하기 configure(AuthenticationManagerBuilder auth) 메서드를 재정의하여 사용자 인증 방법을 구성할 수 있다. 사용자 세부 정보를 검색하는 방법 (ex. DB, LDAP, 인메모리)과 비밀번호 인코딩 방법 등을 정의할 수 있다. @Autowired public void configure..

    @EnableWebMvc 애노테이션이란?

    @EnableWebMvc 애노테이션이란? @Configuration 애노테이션과 함께 쓰여 애노테이션 클래스가 Spring MVC 의 구성 클래스로 작동해야 한다는 신호를 보낸다. 이 클래스는 많은 필수 MVC 관련 컴포넌트를 설정하는 WebMvcConfigurationSupport 에서 Spring MVC 구성을 가져온다. WebMvcConfigurationSupport 에는 Spring Web Mvc 를 구성하기 위한 다양한 기본 설정들이 들어있다. @EnableWebMvc 애노테이션을 사용하고 WebMvcConfigurer 인터페이스 를 구현하여 사용자 정의 구성을 활성화할 수도 있다. 기본 동작을 재정의하거나 확장할 수 있다. 용례 @Configuration @EnableWebMvc public ..

반응형