이전 게시물과 이어지니 참고 바랍니당😏 본 게시물은 개념에 대한 설명보다는 간단한 예시를 작성하여 무조건 실행을 시켜보는 목표를 가지고 작성하였습니다!
간단 예시 게시글인만큼 개념은 간단하게 설명하고자 한다. 아래 그림과 같이 레이어가 구분이 된다.
간단 예제에 앞서 디렉토리를 먼저 아래와 같이 구성한다. 디렉토리는 위의 레이어 구분을 바탕으로 설계하였다.
우선 JPA 활용 예시이기 때문에 build.gradle 의존 라이브러리를 추가하고, 오른쪽 위에 뜨는 코끼리 모양을 눌러 갱신한다. (아래의 라이브러리들은 이전 게시물 참고)
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
@Entity
어노테이션을 이용하여 DB에 본 클래스를 바탕으로 테이블이 생성되도록 한다.
\src\main\java\com\example\demo\entity\Test.java
package com.example.demo.entity;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import javax.persistence.*;
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EnableJpaAuditing
@EntityListeners(AuditingEntityListener.class)
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
private Integer testId;
@Column(length = 100)
private String testContents;
@Builder
public Test(Integer testId, String testContents) {
this.testId = testId;
this.testContents = testContents;
}
}
@RestController
를 통해 요청에 응답한다.
\src\main\java\com\example\demo\controller\TestController.java
package com.example.demo.controller;
import com.example.demo.dto.TestDto;
import com.example.demo.servcie.TestService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@RequestMapping("/test")
public class TestController {
private final TestService testService;
@GetMapping("/test/{str}")
public String test(@PathVariable String str) {
TestDto res = testService.testServiceMethod(str);
return "hello "+res.getTestStr() ;
}
}
@Service
를 비지니스 로직을 구현한다.
\src\main\java\com\example\demo\service\TestService.java
package com.example.demo.servcie;
import com.example.demo.dto.TestDto;
import com.example.demo.repository.TestRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
@Service
@Component
@RequiredArgsConstructor
public class TestService {
private final TestRepository testRepository;
public TestDto testServiceMethod(String str) {
TestDto testDto = new TestDto(str);
return testDto;
}
}
@Repository
를 DB 로직을 작성한다.
\src\main\java\com\example\demo\repository\TestRepository.java
package com.example.demo.repository;
import com.example.demo.entity.Test;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface TestRepository extends JpaRepository<Test, Integer> {
Optional<Test> findById(Integer id);
}
레이어간 통신되는 클래스를 작성한다.
\src\main\java\com\example\demo\dto\TestDto.java
package com.example.demo.dto;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class TestDto {
private String testStr;
public TestDto(String testStr) {
this.testStr = testStr;
}
}
\src\main\java\com\example\demo\DemoApplication.java
에서 메인메서드 옆에 뜨는 run 버튼을 실행한다.
오류가 없으면 아래와 같이 터미널에 나타난다. localhost로 build가 된 상태이다.
브라우저에서 아래와 같이 접속하면 제대로 작동하는 것을 확인할 수 있다.
DB툴로 DB를 확인하면 자동으로 내가 작성 클래스의 DB가 만들어진 것을 확인할 수 있다.
글 잘 보았습니다😊