본문 바로가기
Spring&SpringBoot/<토비의 스프링 3.1 Vol1.1>, 이일민

[토비의 스프링 3.1] 1장 예제 실행을 위한 환경 구성

by 민휘 2023. 3. 2.

새로 산 m1 맥북에 처음부터 설치를 하려니 꽤 오래 걸렸다. 특히 workbench 실행 오류가 나서 업그레이드했더니 잘 되더라.

내가 사용하는 환경은 다음과 같다.

  • Jdk 11
  • OS : macOS Monterey
  • IDE : IntelliJ Ultimate
  • DB : MySQL 8.0.27
  • DB GUI Tool : MySQL WorkBech Community 8.0.27
  • mysql connector java 8.0.32

JDBC를 사용하는 간단한 자바 애플리케이션을 위한 환경 세팅을 해보자.

간단하다. 데이터베이스 설치하고 기본 설정 해놓고, 자바 애플리케이션과 연결하면 된다.

 

데이터베이스 설치 및 설정

 

1. MySQL을 설치한다.

이때 맥 유저들 터미널로 install mysql 을 실행하면 디폴트로 8.0.23 버전이 설치된다.

나는 mysql 아카이브에서 8.0.27 버전 dmg 파일로 설치했다. 이유는 WorkBench 8.0.23 버전을 설치하면 예기치 못한 실행으로 종료되는 오류가 발생해서 워크벤치를 8.0.27로 다시 받았는데, 버전을 동일하게 맞춰주고 싶어서 다시 설치했다.

MySQL :: Download MySQL Community Server (Archived Versions)

 

2. MySQL 버전에 맞는 Workbench를 설치한다.

문제의 워크벤치..! 로컬 인스턴스에 접속해서 sql을 실행하면 강제종료된다. 8.0.23 버전은 Monterey를 호환하지 않는다. OS의 호환 여부를 잘 살펴보고 설치하시길.

MySQL :: Download MySQL Workbench (Archived Versions)

 

3. Workbench에 접속해서 로컬 db 세팅하기

mysql은 기본 포트로 3306을 사용한다. 루프백 주소인 127.0.0.1의 3306번 포트로 접속하면 로컬에서 동작하는 mysql 클라이언트에 접속할 수 있다. 다음과 같이 데이터베이스를 만들어 선택하고, user 테이블을 생성해주면 데이터베이스 구성은 끝!

show databases;
create database toby;
use toby;
create table users(
	id varchar(10) primary key,
    name varchar(20) not null,
    password varchar(20) not null
);
show tables;

 

4. mysql connector 설치하기

데이터베이스와 자바 애플리케이션이 통신할 수 있도록 도와주는 소프트웨어가 바로 mysql connector이다. 자바가 데이터베이스를 사용할 수 있도록 API를 제공한다. 바로 설치해줍니다. 아래 링크에서 tar 파일로 받고 압축해제한다.

MySQL :: Download Connector/J

 

 

 

 

자바 애플리케이션과 연결

자바 프로젝트를 생성한다.

 

JDBC 의존성을 추가한다. File Structures > Libraries > + > Java 클릭하고 mysql connector 압축해제한 파일을 선택한다.

 

1절의 예제 코드를 작성하고 테스트를 실행해본다.

package springbook.user.domain;

public class User {
    String id;
    String name;
    String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
```

```java
package springbook.user.dao;

import springbook.user.domain.User;

import java.sql.*;

public class UserDao {
    public void add(User user) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/toby", "root", "pw");

        PreparedStatement ps = c.prepareStatement("insert into users(id, name, password) values(?,?,?)");
        ps.setString(1, user.getId());
        ps.setString(2, user.getName());
        ps.setString(3, user.getPassword());

        ps.executeUpdate();

        ps.close();
        c.close();
    }

    public User get(String id) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/toby", "root", "pw");

        PreparedStatement ps = c.prepareStatement("select * from users where id = ?");
        ps.setString(1, id);

        ResultSet rs = ps.executeQuery();
        rs.next();

        User user = new User();
        user.setId(rs.getString("id"));
        user.setName(rs.getString("name"));
        user.setPassword(rs.getString("password"));

        rs.close();
        ps.close();
        c.close();

        return user;
    }

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        UserDao dao = new UserDao();

        User user = new User();
        user.setId("minpearl");
        user.setName("민휘");
        user.setPassword("세은이생일");

        dao.add(user);

        System.out.println(user.getId() + " 등록 성공");

        User user2 = dao.get(user.getId());
        System.out.println(user2.getName());
        System.out.println(user2.getPassword());

        System.out.println(user2.getId() + " 조회 성공");
    }
}

테스트 실행이 잘 된 모습이다. 코드를 이렇게 쭉 보다보니 참 더럽다. 얼른 리팩토링하러 다음 장으로 고고~!

 

 

(추가) 스프링 라이브러리 추가하기

1장 5절에서 스프링 사용을 위해 라이브러리를 추가한다. 정리된 압축 파일이 있는지 모르고 책에 나와있는 파일을 하나씩 검색하고 다운받았다. 이 글을 보는 여러분을 위해 준비했다 - ! 압축 파일을 풀어서 안에 있는 라이브러리 파일들을 모듈로 추가해주면 된다. 추가 방법은 아래 블로그 글을 참고하시길.

 

Spring Library.zip
2.51MB

 

[IntelliJ] 외부 라이브러리 추가하기

 

[IntelliJ] 외부 라이브러리 추가하기

외부 라이브러리 추가하기 1. File > Project Structure (Ctrl + Alt + Shift + S) 2. Modules > 외부 라이브러리를 추가할 프로젝트를 선택 > Dependencies > '+' 버튼을 클릭 > '1 JARs or directories...' 클릭 3. 외부 라이브

tychejin.tistory.com