상세 컨텐츠

본문 제목

프로젝트 목표: 스프링 부트, MyBatis를 이용하여 학생 정보를 CRUD(Create, Read, Update, Delete) 할 수 있는 REST API를 구현합니다.

Spring(프레임워크)

by 헬로제이콥 2025. 1. 17. 15:49

본문

JSP를 어느 정도 알고 계시다면 스프링 부트를 배우시는데 큰 도움이 될 거예요. 스프링 부트는 자바 개발 생산성을 높여주는 강력한 프레임워크로, REST API 개발에 특화되어 있습니다.

프로젝트 개요 및 개발 과정 설명

프로젝트 목표: 스프링 부트, MyBatis를 이용하여 학생 정보를 CRUD(Create, Read, Update, Delete) 할 수 있는 REST API를 구현합니다.

개발 환경:

  • 스프링 부트 버전: 2.7.12
  • DB: H2
  • 빌드 도구: Maven
  • ORM: MyBatis
  • API: RESTful API

개발 과정:

  1. 프로젝트 생성: 스프링 초기화 웹사이트 (start.spring.io)를 이용하여 스프링 부트 프로젝트를 생성합니다. 필요한 의존성 (스프링 웹, MyBatis, H2 데이터베이스 등)을 추가합니다.
  2. Entity 클래스 생성: 학생 정보를 나타내는 Student 클래스를 생성합니다.
  3. Mapper 인터페이스 생성: SQL 쿼리를 작성할 StudentMapper 인터페이스를 생성합니다.
  4. XML Mapper 파일 생성: StudentMapper 인터페이스에 대한 SQL 쿼리를 작성합니다.
  5. Service 클래스 생성: 비즈니스 로직을 처리할 StudentService 클래스를 생성합니다.
  6. Controller 클래스 생성: REST API 요청을 처리할 StudentController 클래스를 생성합니다.
  7. 테스트: 작성된 API를 테스트합니다.

CRUD 코드 예시 및 설명

Entity 클래스 (Student.java)

Java
 
@Data
@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String studentId;
    private String name;
    private String phoneNumber;
    private String address;
}
  • @Data: Lombok 어노테이션으로 getter, setter, toString 등을 자동 생성합니다.
  • @Entity: JPA Entity로 지정합니다.
  • @Id: Primary Key를 지정합니다.
  • @GeneratedValue: 자동 증가 값을 사용합니다.

Mapper 인터페이스 (StudentMapper.java)

Java
 
public interface StudentMapper {
    List<Student> findAll();
    Student findById(Long id);
    int insert(Student student);
    int update(Student student);
    int deleteById(Long id);
}
  • 각 메서드는 SQL 쿼리에 대응됩니다.

XML Mapper 파일 (StudentMapper.xml)

XML
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.StudentMapper">
    <select id="findAll" resultType="com.example.demo.entity.Student">
        SELECT * FROM student;
    </select>
    </mapper>
  • namespace: Mapper 인터페이스의 패키지 경로를 지정합니다.
  • select, insert, update, delete: 각 SQL 쿼리의 ID와 결과 타입을 지정합니다.

Service 클래스 (StudentService.java)

Java
 
@Service
public class StudentService {
    @Autowired
    private StudentMapper studentMapper;

    public List<Student> findAll() {
        return studentMapper.findAll();
    }

    // 나머지 메서드 구현
}
  • @Service: 스프링 빈으로 등록합니다.
  • @Autowired: StudentMapper를 자동 주입합니다.

Controller 클래스 (StudentController.java)

Java
 
@RestController
@RequestMapping("/students")
public class StudentController {
    @Autowired
    private StudentService studentService;

    @GetMapping
    public List<Student> getAllStudents() {
        return studentService.findAll();
    }

    // 나머지 API 메서드 구현
}
  • @RestController: REST Controller로 지정합니다.
  • @RequestMapping: 요청 URL을 지정합니다.
  • @GetMapping, @PostMapping 등: HTTP 메서드에 따른 요청 처리 메서드를 지정합니다.

설명:

  • 위 코드는 간단한 예시이며, 실제 프로젝트에서는 더 복잡한 로직이 추가될 수 있습니다.
  • MyBatis는 XML 또는 어노테이션을 이용하여 SQL 쿼리를 작성할 수 있습니다.
  • 스프링 부트는 자동 설정 기능을 제공하여 개발 생산성을 높여줍니다.
  • REST API는 JSON 형식으로 데이터를 주고받습니다.

다음 단계:

  • 위 코드를 바탕으로 실제 프로젝트에 맞게 수정하고 확장합니다.
  • 에러 처리, 보안, 성능 최적화 등을 고려하여 개발합니다.
  • 스프링 부트의 다양한 기능 (AOP, 데이터베이스 트랜잭션, 스케줄링 등)을 활용하여 더욱 강력한 애플리케이션을 개발합니다.

관련글 더보기