<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
(2) h2 관리자 콘솔 활성화
*application.properties
spring.h2.console.enabled=true
(3) Application.java 실행
(4) 웹브라우저에 요청
http://localhost:8080/h2-console
src/main/resources
schema.sql : create table문
data.sql : insert문
schema.sql
create table todo(
id int primary key,
name varchar(255) not null,
author varchar(255) not null);
data.sql
insert into todo (id,name,author) values(1, 'boot공부','홍길동');
insert into todo (id,name,author) values(2, 'react공부','홍길동');
insert into todo (id,name,author) values(3, 'CI/CD공부','홍길동');
TodoH2Service
Application.java <--> TodoH2ServiceImpl <--> TodoH2Repository (DAO) <---> h2
TodoDTO (Todo)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
-- application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=1234
https://docs.spring.io/spring-boot/docs/2.7.18/reference/htmlsingle/
-- application.properties
spring.sql.init.mode = always | never
: @Repository 클래스 + TodoMapper.xml 연동
파이널 프로젝트에서 쓸 것 !!
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
-- application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=1234
Service 클래스 DAO 클래스
SqlSession 얻기 <-----------------> SqlSession 사용
SqlSession 전달
트랜잭션 처리
close()
==> 이전 SE 버전에서는 DAO에서 사용하는 sqlSession을 Service에서 얻어서 DAO에 넘겨주는 형태로 사용했음. 그 이유는 트랜잭션 처리 때문이다
==> 트랜잭션 처리는 session.commit() / session.rollback()으로 처리함
==> Spring에서는 SqlSession 역할을 하는 빈이 제공됨 (SqlSessionTemplate)
Service 클래스 DAO 클래스 (Repository)
SqlSessionTemplate 얻기
@Transactional
public void tx() {
insert();
delete();
}
==> @Transactional 동작 방식
-- application.properties에
# 별칭
mybatis.type-aliases-package=com.exam.dto
# mapper 등록 (하나로 퉁치기)
mybatis.mapper-locations=com/exam/config/*Mapper.xml
#mybatis.mapper-locations=com/exam/config/TodoMapper.xml
1) 기존 repository 삭제
2) com.exam.config.TodoMapper.java 인터페이스 작성
3) TodoMapper.xml의 namespace 값
( < mapper namespace="com.exam.config.TodoMapper" > ) 과
TodoMapper 인터페이스의 경로가 반드시 일치해야 된다
4) TodoMapper.java에 @Mapper 어노테이션 지정
5) TodoMapper.java 인터페이스의 메서드명과 TodoMapper.xml의 id 값이 일치해야된다