라라벨을 처음 사용해보면서 내게 익숙했던 springboot의 기준에서 구조를 비교해보았다.
1. Entity
- SpringBoot : Entity Class는 Jpa의 @Entity 어노테이션을 통해 관계형 데이터베이스 테이블과 매핑된다.
- Larevel : 라라벨에서는 Model이 Entity에 해당한다. Model Class를 상속받은
Class는 Eloquent ORM을 통해 정의되며, 관계형 데이터베이스 테이블과 매핑된다.
- 자바의 ORM 표준인 JPA의 매핑방식과 유사하다
2. Controller
- SpringBoot : Controller Class는 http 요청이 들어오면 적절한 Service를 호출하고 결과를 반환한다.
- Laravel : Routing을 통해 요청을 받으면 해당 요청을 Controller에서 처리한다. MVC 모델에 따라 모델과 뷰에 접근하고 조작하는 로직은 Controller에 담는 것이 좋다
3. Service, Repository
- SpringBoot : SpringBoot에서 Service Class는 비지니스 로직을 구현하고 Controller와 Repository의 중간역할을 한다. 주로 Transaction 관리, 예외처리 등을 담당한다.
Repository interface는 JPA에서 제공하는 기능을 통해 데이터베이스에 접근하는 매서드를 정의한다.
- Laravel : Laravel은 별도의 Service, Repository Class가 존재하지 않는다.
기본적인 구조는 이러하나 Laravel에서도 Spring과 같이 Controller를 Controller-Service-Repository 패턴으로 확장이 가능하다. 하지만 각각의 장단점이 있기 때문에 프로젝트의 유형과 구조에 따라 선택하면 될 것 같다.
[다음 포스팅(예정)]
- Laravel의 전체적인 구조와 LifeCycle에 대해 알아보기