본문 바로가기
Spring( Framework )

스프링 부트, MyBatis 기반 자동차 관리 예제 프로그램

by 헬로제이콥 2025. 1. 22.

스프링 부트, MyBatis 기반 자동차 관리 예제 프로그램 작성 가이드

 

일반적으로 스프링 부트를 이용하여 데이터를 CRUD 하는 방식으로 시스템을 구축할 때, 
다음과 같은 순서로 진행하는 것이 일반적입니다.

1)모델(Entity) 정의: 학생 클래스를 통해 데이터베이스 테이블과 매핑될 엔티티를 정의합니다.
2)데이터 접근 계층 (Mapper): Mybatis와 같은 ORM 프레임워크를 이용하여 SQL 쿼리를 작성하고, 자바 객체와 데이터베이스 레코드를 매핑합니다.
3)서비스 계층: 비즈니스 로직을 구현합니다. 데이터베이스에 대한 CRUD 작업을 수행하고, 필요한 경우 트랜잭션을 관리하거나, 다른 서비스를 호출하는 등의 작업을 수행합니다.
4)컨트롤러 계층: HTTP 요청을 처리하고, 서비스 계층을 호출하여 비즈니스 로직을 실행한 후, 결과를 클라이언트에게 반환합니다.

 

 

1. 프로젝트 설정

  • Spring Initializr를 통해 새로운 Spring Boot 프로젝트를 생성합니다.
  • Dependencies: Spring Web, Spring Data JPA, MyBatis, H2 Database를 추가합니다.
  • Build Tool: Maven을 선택합니다.

2. 데이터베이스 설정

  • application.properties: H2 데이터베이스 연결 정보를 설정합니다.

<!-- end list -->

properties spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driver-class-name=org.h2.Driver spring.datasource.usernam 1 e=sa spring.datasource.password= spring.jpa.hibernate.ddl-auto=create-drop ```  

3. Entity 클래스 생성

  • Car.java: 자동차 정보를 나타내는 엔티티 클래스를 생성합니다.
Java
 
@Data
@Entity
public class Car {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String model;
    private String color;
}

 

4. Mapper 인터페이스 및 XML 생성

  • CarMapper.java: 자동차 관련 SQL 쿼리를 정의하는 Mapper 인터페이스를 생성합니다.

<!-- end list -->

Java
 
public interface CarMapper {
    List<Car> findAll();
    Car findById(Long id);
    int insert(Car car);
    int update(Car car);
    int deleteById(Long id);
}
  • CarMapper.xml: 실제 SQL 쿼리를 작성합니다.

<!-- end list -->

코드 스니펫
 
<?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">
espace="com.example.demo.mapper.CarMapper">
    <select id="findAll" resultType="Car">
        SELECT * FROM CAR
    </select>
    </mapper>

 

5. 서비스 계층 구현

  • CarService.java: CarMapper를 이용하여 비즈니스 로직을 구현합니다.

<!-- end list -->

Java
 
@Service
public class CarService {
    @Autowired
    private CarMapper carMapper;

    public List<Car> getAllCars() {
        return carMapper.findAll();
    }
    // 나머지 메소드 구현
}

 

6. 컨트롤러 계층 구현

  • CarController.java: RESTful API를 제공하는 컨트롤러를 구현합니다.

<!-- end list -->

Java
 
@RestController
@RequestMapping("/cars")
public class CarController {
    @Autowired
    private CarService carService;

    @GetMapping
    public List<Car> getAllCars() {
        return carService.getAllCars();
    }
    // 나머지 API 구현
}

 

7. MyBatis 설정

  • application.properties: MyBatis 설정을 추가합니다.

<!-- end list -->

Properties
 
mybatis.configuration.map-underscore-to-camel-case=true

8. 테스트

  • CarControllerTest.java: JUnit으로 컨트롤러 테스트를 수행합니다.

 

추가 기능 및 고려 사항

  • 검색 기능: 모델명, 색상 등으로 검색하는 기능을 추가할 수 있습니다.
  • 페이징 처리: 많은 데이터를 효율적으로 처리하기 위해 페이징 처리를 구현할 수 있습니다.
  • 예외 처리: 예외 발생 시 적절한 메시지를 반환하도록 처리합니다.
  • 보안: API 보안을 위해 적절한 보안 설정을 적용합니다.
  • 데이터베이스 스키마: 자동차 테이블에 추가적인 필드 (연식, 가격 등)를 추가하여 기능을 확장할 수 있습니다.

주의: 위 예제는 간단한 자동차 관리 시스템을 구축하기 위한 기본적인 구조를 제공합니다. 실제 프로젝트에서는 더 복잡한 비즈니스 로직과 다양한 기능들이 추가될 수 있습니다.

핵심:

  • Entity: 데이터베이스 테이블과 매핑되는 객체
  • Mapper: SQL 쿼리를 정의하는 인터페이스
  • Service: 비즈니스 로직을 구현하는 계층
  • Controller: RESTful API를 제공하는 계층