상세 컨텐츠

본문 제목

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

Spring(프레임워크)

by 헬로제이콥 2025. 1. 22. 13:06

본문

스프링 부트, 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를 제공하는 계층

관련글 더보기