Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

승띵이의 개발일지

[Spring Boot] DB 연동 (feat. 메모장 만들기) 본문

언어/Spring Boot

[Spring Boot] DB 연동 (feat. 메모장 만들기)

승띵이 2022. 10. 26. 14:10

이전 게시글에서 만들었던 귀염뽀짝한 메모장과 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 된다.

 

 

잼민아 안녕

 

여러가지 이름과 메모 Insert 완료!

Comments