일반적으로 스프링 부트를 이용하여 데이터를 CRUD 하는 방식으로 시스템을 구축할 때,
다음과 같은 순서로 진행하는 것이 일반적입니다.
1)모델(Entity) 정의: 학생 클래스를 통해 데이터베이스 테이블과 매핑될 엔티티를 정의합니다.
2)데이터 접근 계층 (Mapper): Mybatis와 같은 ORM 프레임워크를 이용하여 SQL 쿼리를 작성하고, 자바 객체와 데이터베이스 레코드를 매핑합니다.
3)서비스 계층: 비즈니스 로직을 구현합니다. 데이터베이스에 대한 CRUD 작업을 수행하고, 필요한 경우 트랜잭션을 관리하거나, 다른 서비스를 호출하는 등의 작업을 수행합니다.
4)컨트롤러 계층: HTTP 요청을 처리하고, 서비스 계층을 호출하여 비즈니스 로직을 실행한 후, 결과를 클라이언트에게 반환합니다.
<!-- 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 ```
@Data
@Entity
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String model;
private String color;
}
<!-- end list -->
public interface CarMapper {
List<Car> findAll();
Car findById(Long id);
int insert(Car car);
int update(Car car);
int deleteById(Long id);
}
<!-- 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>
<!-- end list -->
@Service
public class CarService {
@Autowired
private CarMapper carMapper;
public List<Car> getAllCars() {
return carMapper.findAll();
}
// 나머지 메소드 구현
}
<!-- end list -->
@RestController
@RequestMapping("/cars")
public class CarController {
@Autowired
private CarService carService;
@GetMapping
public List<Car> getAllCars() {
return carService.getAllCars();
}
// 나머지 API 구현
}
<!-- end list -->
mybatis.configuration.map-underscore-to-camel-case=true
주의: 위 예제는 간단한 자동차 관리 시스템을 구축하기 위한 기본적인 구조를 제공합니다. 실제 프로젝트에서는 더 복잡한 비즈니스 로직과 다양한 기능들이 추가될 수 있습니다.
핵심:
스프링 프레임워크와 커피 제조 이해하기 (0) | 2025.01.23 |
---|---|
Long 타입을 사용하는 이유 (1) | 2025.01.22 |
이클립스 유용한 단축키 정리 (0) | 2025.01.22 |
프로젝트 목표: 스프링 부트, MyBatis를 이용하여 학생 정보를 CRUD(Create, Read, Update, Delete) 할 수 있는 REST API를 구현합니다. (0) | 2025.01.17 |
MyBatis에서 매퍼 XML과 주석 기반 구성의 차이점 (0) | 2025.01.17 |