이전 장에 이어 이번에는 로직을 구성할 수 있도록 Domain, Service, Controller를 구성한다.

Domain

Jpa + Hibernate with lombok 도메인의 구현은 다음의 방법으로 이루어진다.

  • Entity 선언
    @Entity
    @Data
    public class User implements Serializable {
      @Id
      @GeneratedValue
      private Long id;

      @Column(unique = true)
      private String username;
      private String password;
      private Date createdAt;
      private Date lastLoginAt;

      @Enumerated(EnumType.STRING)
      private Role role;

    }
- Entity : Domain임을 의미한다.  
- Data : lombok을 위한 annotation이다.    
- Id : table의 pk id임을 의미한다.  
- GeneratedValue : 자동 생성  
- Column : 칼럼 설정을 위해 쓰인다.  
  • Repository 선언
public interface UserRepository extends JpaRepository<User, Long> {
  User findByUserName(String username);
  ...
}

JpaRepository를 extends하며 대상 Enitty와 Entity의 pk id의 type을 써준다.
이후에는 사용할 method 를 정의해 주면 된다.

Service

서비스는 더욱 간단하다. Class에 @Service annotation만 붙이면 된다.

@Service
public class UserService {

}

@Transactional 도 사용할 수 있다.

Controller

Controller도 역시 간단하다. class에 @Controller 혹은 @RestController 를 붙이면 된다.

@RestController
public class UserContrller {

  @Autowired
  UserSerivce userService;
  
  @RequestMapping(method = RequeseMethod.GET, path = "/user")
  @ResponseBody
  public User info() {
    User user =  userService.getUser("username");

    return user;
  }
}

이 외에 더 많은 정보는 https://spring.io/ 를 참고하면 된다.


realjays

반박시 당신말이 맞습니다.