승띵이의 개발일지
[Spring Boot] DB 연동 (feat. 메모장 만들기) 본문
이전 게시글에서 만들었던 귀염뽀짝한 메모장과 DB를 연동해보려고 한다.
이전 게시글 : https://myung-it.tistory.com/23?category=591079
[Spring Boot] 메모장 만들기(feat. HTML, CSS, JS)
메모장 만들기 Spring Boot 개발을 연습하기 위해 이름, 메모, 작성 버튼이 있는 간단한(?) 메모장을 만들어 보았다. 경로 지정 & 파일 생성 패키지를 적절히 잘 활용하여 경로 지정을 가독성 있게 잘
myung-it.tistory.com
의존성 추가
일단 DB와 Java를 연동하기 위해서는 의존성을 추가해줘야 한다. 본인의 경우 MariaDB를 사용하기에 MariaDB JDBC 의존성을 추가해주었다.
의존성은 메이븐 공개 저장소에서 다운로드 가능하다.
메이븐 공개 저장소 : https://mvnrepository.com
MemoEntity 클래스 생성
MemoEntiy 클래스를 만들어 Getter Setter 메서드와 equals(), hashCode() 제너레이터를 통해 코드를 간결하게 만들어 보겠다. 이 과정이 엔티티 클래스를 만드는 과정이다.
import java.util.Objects;
public class MemoEntity {
private int index;
private String name;
private String text;
public int getIndex() { //private인 변수 값을 나타내준다
return index;
}
public void setIndex(int index) { //private인 변수 값을 지정해준다.
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Override
public boolean equals(Object o) { //equals()를 재정의한다.
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MemoEntity that = (MemoEntity) o;
return index == that.index;
}
@Override
public int hashCode() { //hashCode()를 재정의한다.
return Objects.hash(index);
}
}
MemoController 수정
MemoEntitiy 클래스를 사용하여 코드를 수정하였다.
똑같은 결과를 도출하지만 코드가 한결 간결해졌다. 보기좋아
@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView postIndex(MemoEntity memo) throws ClassNotFoundException, SQLException { //엔티티 클래스를 사용하여 코드를 간단하게 만듬
System.out.printf("이름 : %s\n", memo.getName());
System.out.printf("내용 : %s\n", memo.getText());
ModelAndView modelAndView = new ModelAndView("memo/index");
return modelAndView;
}
DB 연동
먼저 테이블을 생성하였다.
원래 존재하던 study 스키마에 memos 테이블을 추가하였다. index, name, text 칼럼을 추가하여 생성하였고 PK를 index로 설정하였다.
create table study.memos
(
`index` int unsigned not null auto_increment,
`name` varchar(10) not null,
`text` varchar(100) not null,
constraint primary key (`index`)
);
처음에 MariaDB JDBC 의존성을 추가했기 때문에 바로 Class.forName() 메서드를 사용하여 사용할 JDBC 드라이버를 선언하고 DriverManager.getConnectoin() 메서드로 DBMS에 접속하기 위한 연결 객체를 받아왔다.
//DB 연동해서 입력 받은 값 memo 테이블에 Insert 하기
Class.forName("org.mariadb.jdbc.Driver");
Connection connection = DriverManager.getConnection
("jdbc:mariadb://localhost:12602",
"study",
"test1234");
System.out.println(connection.isClosed()); //DB 연결 여부 확인
PreparedStatement preparedStatement = connection.prepareStatement
("insert into study.memos (`name`, `text`) values (?, ?)");
preparedStatement.setString(1, memo.getName());
preparedStatement.setString(2, memo.getText());
preparedStatement.executeUpdate();
preparedStatement 객체를 생성하여 Insert 쿼리문을 파라미터로 정한 다음 preparedStatement.setString() 메서드를 사용하여 메모장에서 입력받은 값을 매개변수로 지정하였다. 그 후 excuteUpdate() !!
결과
메모장에 이름과 메모를 입력하면 study.memos 테이블에 해당 값이 Insert 된다.
'언어 > Spring Boot' 카테고리의 다른 글
[Spring Boot] 메모장 만들기2 (feat. MyBatis) (0) | 2022.10.30 |
---|---|
[Spring Boot] MyBatis (0) | 2022.10.26 |
[Spring Boot] 메모장 만들기(feat. HTML, CSS, JS) (2) | 2022.10.26 |
[Spring Boot / 문제] 어노테이션 활용 (Add, Multiply 주소 & HTML 연동) (0) | 2022.10.25 |
[Spring Boot / Web] 웹 프로젝트 만들기 (0) | 2022.10.25 |