본문 바로가기

학습 기록/스프링 부트3 백엔드 개발자 되기[자바편]

[03장.2] 2. 프레젠테이션, 서비스, 퍼시스턴스 계층 만들기

[프레젠테이션 계층]

@RestController
public class TestController{
	@Autowired // TestService 빈 주입
    TestService testService;
    
    @GetMapping("/test")
    public List<Member> getAllMembers(){
        List<Member> members = testService.getAllMembers();
        return members;
    }
}

 

[비즈니스 계층]

@Service
public class TestService{
	@Autowired // MemberRepository 빈 주입
    MemberRepository memberRepository;
    
    public List<Member> getAllMembers(){
    	return memberRepository.findAll(); // memberRepository에 있는 Member 모두 검색
    }
}

 

[퍼시스턴트 계층]

DB에 접근할 때 사용할 객체인 Member DAO를 생성

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Getter
@Entity
public class Memeber{
	@Id
    @GeneraltedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false)
    private Long id; // DB 테이블의 id 칼럼과 매칭
    
    @Column(name = "name", nullable = false)
    private String name; // DB 테이블의 name 칼럼과 매칭
}

 

매핑 작업을 위한 MemberRepository 인터페이스 파일 생성

@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {

}

* JpaRepository : PagingAndSortingRepository, QueryByExampleExecutor 상속

- PagingAndSortingRepository : 기본 CRUD 기능을 제공하는 CrudRepository 인터페이스 상속

- QueryByExampleExecutor : 더 다양한 CRUD 제공