개요
이 블로그 포스트에서는 MyBatis와 RESTful API를 함께 사용하는 방법에 대해 알아보겠습니다. MyBatis는 Java 어플리케이션과 데이터베이스 간의 연동을 단순하게 만들어주는 ORM(Object-Relational Mapping) 프레임워크입니다. RESTful API는 웹 서비스를 위한 아키텍처 스타일로, HTTP 프로토콜을 사용하여 클라이언트와 서버 간의 통신을 수행합니다.
MyBatis 설정
먼저, MyBatis 설정을 진행해야 합니다. 프로젝트의 pom.xml 파일에 MyBatis와 JDBC 드라이버 의존성을 추가해주세요.
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
그리고, MyBatis의 설정 파일인 mybatis-config.xml
을 작성해야 합니다. 아래는 예시입니다.
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="username" value="root" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mappers/MyMapper.xml" />
</mappers>
</configuration>
RESTful API 구현
이제 RESTful API를 구현해보겠습니다. Spring Framework를 사용하여 간단한 CRUD(Create, Read, Update, Delete) API를 만들어보겠습니다.
@RestController
@RequestMapping("/api")
public class MyController {
@Autowired
private MyService myService;
@GetMapping("/mydata")
public List<MyData> getAllData() {
return myService.getAllData();
}
@PostMapping("/mydata")
public MyData createData(@RequestBody MyData myData) {
return myService.createData(myData);
}
@PutMapping("/mydata/{id}")
public MyData updateData(@PathVariable Long id, @RequestBody MyData myData) {
return myService.updateData(id, myData);
}
@DeleteMapping("/mydata/{id}")
public void deleteData(@PathVariable Long id) {
myService.deleteData(id);
}
}
위의 코드에서 MyService
는 비즈니스 로직을 처리하는 서비스 클래스입니다. 이 클래스의 구현은 데이터베이스와의 상호작용을 포함하게 됩니다.
MyBatis와 연동
이제 MyBatis와 RESTful API를 연동해보겠습니다. MyBatis를 사용하여 데이터베이스와의 상호작용을 수행합니다.
@Repository
public class MyRepository {
@Autowired
private SqlSessionFactory sqlSessionFactory;
public List<MyData> getAllData() {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.selectList("com.example.mappers.MyMapper.getAllData");
}
}
public MyData createData(MyData myData) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.insert("com.example.mappers.MyMapper.createData", myData);
session.commit();
}
return myData;
}
public MyData updateData(Long id, MyData myData) {
try (SqlSession session = sqlSessionFactory.openSession()) {
myData.setId(id);
session.update("com.example.mappers.MyMapper.updateData", myData);
session.commit();
}
return myData;
}
public void deleteData(Long id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.delete("com.example.mappers.MyMapper.deleteData", id);
session.commit();
}
}
}
위의 코드에서는 SqlSessionFactory
를 주입받아 MyBatis를 사용하여 데이터베이스와의 상호작용을 수행합니다.
마무리
이렇게 MyBatis와 RESTful API를 함께 사용하여 웹 애플리케이션을 개발할 수 있습니다. MyBatis를 사용하여 데이터베이스와의 상호작용을 단순화하고, RESTful API를 통해 클라이언트와 서버 간의 통신을 수행할 수 있습니다. 이를 통해 좀 더 효율적이고 유지보수 가능한 코드를 작성할 수 있습니다.
참고 문서
- MyBatis 공식 문서: https://mybatis.org/mybatis-3/
- Spring Framework 공식 문서: https://spring.io/