์๋ฌ ๋ฐ์ ๐จ
Spring Data JDBC ์์ ์ ์ํ ์ธ๋ฉ๋ชจ๋ฆฌ(In-memory) DB์ธ H2์ ์ธํ ๋ฆฌ์ ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ถ๋ถ์ ์ฐ๊ฒฐ์ ๋ง์ง๋ง ๋ถ๋ถ์ธ ๋ฉ์ธ์ง๋ฅผ ์์ฒญํ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์๋์ง ํ์ธ๋ง ํ๋ฉด ๋๋ ๋ถ๋ถ์ด์์ง๋ง ์์๋ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ค๋ฅ ๋ฐ์๊น์ง์ ์ฐ๋ ๋ฐฉ์์ ์ด๋ฌํ๋ค.
- build.gradle์ dependencies์ ์์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
1
2
- `implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'`
- `runtimeOnly 'com.h2database:h2'`
application.yml ํ์ผ์ H2 Browser ํ์ฑํ ์ค์ ์ถ๊ฐ
์ฝ๋ ๊ตฌํ
1
2
3
4
5
6
- MessageDto.class
- MessageController.class
- MessageMapper.interface
- MessageService.class
- Message.class(Entity)
- MessageRepository.interface(DB๊ณ์ธต)
๋ฌธ์ ํ์ ๐
๋จผ์ ์ ์ค๋ฅ์ ์๋ฏธ๋ ์๋ณ์๋ก ์ ์ฅ๋ ํ์๋ null๊ฐ์ด ๋์ค๋ฉด ์๋๋ค ๋ผ๋ ์๋ฏธ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด Primary key๋ฅผ ์ง์ ํ ๋ ์ค์๋ฅผ ํ์๊น, SQL์์ ์คํ๊ฐ ์์๋ ์ถ์ด ํ์ธํด๋ณด์๋ค.
1
2
3
4
5
6
# .sql
CREATE TABLE IF NOT EXISTS MESSAGE (
message_id bigint NOT NULL AUTO_INCREMENT,
message varchar(100) NOT NULL,
PRIMARY KEY (message_id)
);
.sql ํ์ผ์์๋ ์๋ชป๋๊ฑธ ๋ฐ๊ฒฌํ ์ ์์๋ค. id๋ฅผ Primary key๋ก ํ๊ธฐ ์ํด ๊ฐ์ ์ ๋ ฅํ์ง ์์๋ ์๋์ผ๋ก ๊ฐ์ ํฌํจ์์ผ์ฃผ๋ AUTO_INCREMENT๋ ์ ์ ์๋ค.
๊ทธ๋์ ๋ ์์๋ณด์๋๋ ์๊ฒ๋๊ฒ ์์๋ค.
- ๋ฐ์ดํฐ ์์ธ์ค ๊ณ์ธต์์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์ฐ๋์ ๋ด๋นํ๋ MessageRepository.Interface๋ CrudRepository.Interface๋ฅผ ์์๋ฐ๊ณ ์๋ค.
1
2
3
// MessageRepository.Interface
public interface MessageRepository extends CrudRepository<Message, Long> {
}
CrudRepository.Interface๋ Spring์์ ์ง์ํด์ฃผ๋ ์ธํฐํ์ด์ค์ด๋ค.
MessegeService.class์์ DI๋ฅผ ํตํด MessageRepository.Interface๋ฅผ ์ฃผ์ ๋ฐ์ ์ฌ์ฉํ ๋
save()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
1
2
3
public Message createMessage(Message message) {
return messageRepository.save(message);
}
save()
์ฌ์ฉ์ ์ปฌ๋ผ์ ๋ช ์ํ์ง ์์ผ๋ฉด null๊ฐ์ผ๋ก ๋ฎ์ด์ฐ๋ ํ์์ด ๋ฐ์ํ๋ค ์ฐธ๊ณ
ํด๊ฒฐ๐ง
์ด ์ฌ์ค์ ์๊ณผ ๋์์ Message.class ํ์ผ์ ๋ฐ๋ก ์ด์ด๋ณด์๋๋..
1
2
3
4
5
// Message.class
public class Message {
private long messageId;
private String message;
}
โฆโฆโฆโฆ.
์ ์ ํ ๋ง์ ์๊ณ ์ณ๋ค๋ณด๋ค๊ฐ ์ฒ์ฒํ ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด ์ฃผ์๋ค.
1
2
3
4
5
6
7
import org.springframework.data.annotation.Id;
public class Message {
@Id
private long messageId;
private String message;
}
์ค๋ฅ๊ฐ ์ธ์ ์์๋๋๋ฏ์ด ํด๊ฒฐ๋์๋ค! ๋ด ๋ง๋ ์๋๋ ์ค์ ๋๋ถ์ ์ค๋๋ ์ง์์ด ์์นํ๋ค!!๐