코딩하는 털보

Spring Framework - 12 본문

IT Study/Spring Framework

Spring Framework - 12

이정인 2020. 12. 18. 18:58

도메인 클래스 컨버터 자동 등록

스프링 데이터 JPA는 도메인 클래스 컨버터를 제공한다.

  • 도메인 클래스 컨버터
    : 스프링 데이터 JPA의 Repository를 사용해서 ID에 해당하는 엔티티를 읽어온다.

스프링 데이터 JPA 및 h2DB 의존성 설정

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

Repository 추가

public interface PersonRepository extends JpaRepository<Person, Long> {
}

엔티티 맵핑

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

도메인 클래스 컨버터

    @GetMapping("/hello")
    public String hello(@RequestParam("id") Person person) {
        return "hello" + person.getName();
    }

get 메서드는 ID를 파라미터로 받는데, 받은 파라미터가 문자열이더라도
자동으로 등록된 도메인 클래스 컨버터에 의해 Person 객체로 변환될 수 있다.

테스트

    @Test
    public void hello() throws Exception {
        Person person = new Person();
        person.setName("이정인");
        Person savedPerson = personRepository.save(person);

        mockMvc.perform(MockMvcRequestBuilders.get("/hello")
                .param("id",savedPerson.getId().toString()))
                .andDo(print())
                .andExpect(content().string("hello이정인"));
    }
Comments