본문 바로가기
SPRING

[Spring] MyBatis를 활용한 Login 구현 - 1

by 킹명주 2022. 7. 5.

앞시간에 REST API를 맛만보았다. 원래 프로그래밍을 가장 처음하면 Hello World를 출력하는 것으로 시작한다. 그렇다면 웹에서 시작은 무엇일까? 바로 로그인이다. 이것도 매우 간단하기 때문에 후딱하고 다음 단계로 넘어가야겠다.

시작하기 앞서 DB를 활용하기 위해 사용하는 MyBatis와 JPA에 대해 소개하고자 한다.

MyBatis vs JPA(Java Persistence API)

인프런 강의나 최근 자료들을 보면 MyBatis를 사용하지말고 JPA를 사용하라는 것을 많이 봤을 것이다. 실제로 JPA를 사용하는 비율이 압도적이다. MyBatis는 SQL Mapper의 종류 중 하나이고 JPA는 OBM 기술로 분류된다. 그렇다면 OBM이 뭐길래 사람들이 열광을 하는 것일까?

ORM(Object-Relational Mapping)

우리가 일반 적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다.

 

JPA를 사용하여 얻을 수 있는 가장 큰  장점은 SQL아닌 객체 중심으로 개발할 수 있다는 것이다. 객체 중심 개발은 생산성이 좋아지고 유지보수도 수월하다. 그래서 JPA가 인기가 많은 것 같다.

 

근데 왜 나는 MyBatis를 쓸까?

그냥.. 일단 해보는게 중요하니까요오.. 초보자가 편식할 때입니까..? 이런거 차이점 찾아볼 시간에 바로 해보자는 생각으로 MyBatis로 로그인 기능을 구현해보았습니다.


MySQL

 

백엔드 개발자가 데이터베이스를 활용하지 못하는 것은 사실상 총없이 전쟁에 나가는 것과 동일하다. 그래서 언젠간 쓰일 것이기 때문에 MySQL을 다운받아두자! 물론 다른 데이터베이스 플랫폼을 활용해도 상관 없다.

https://dev.mysql.com/downloads/mysql/

 

MySQL :: Download MySQL Community Server

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86

dev.mysql.com

여기서 다운로드를 진행하면 된다. 크게 어려운 것은 없고 쭉쭉 체크 후 진행하면 된다. 다운로드가 완료되면 mac의 시스템 환경 설정에서 다음과 같은 아이콘을 확인할 수 있다.

MySQL을 클릭해서 들어간 후 Initalizaing database를 클릭해보자.

 

이런식으로 root 계정을 비밀번호를 설정할 수 있는데, 나중에 Sequel Pro 등으로 연결해서 사용하려면 Use Legacy Password Encryption을 선택하는 것이 좋다.

그럼 이제 아래와 같은 명령어로 실행을 해보자!

mysql -u root -p
Enter password:
mysql>

mysql> exit
Bye

앞서 지정한 비밀번호를 입력하면 mysql에 접속하는 것을 확인할 수 있다. 만약 나가고 싶다면 exit를 입력하면 된다.

이제 간단한 login 기능을 위해 id, password 테이블을 하나 만들어 볼 것이다.

 

근데.. 단순하게 table을 만든다고해서 사용할 수 있는건 아니다. database를 우선 먼저 만들고 그 안에서 table을 만들어야 한다.

일단 어떤 데이터베이스가 있는지 한번 조회해보자.

show databases; 명령어를 통해 현재 database를 확인할 수 있다. 그렇다면 새로운 test database를 하나 만들고자 한다.

mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.01 sec)

mysql> USE test;
Database changed

대소문자 구별을 하지 않기 때문에 소문자로 명령어를 수행해도 상관없다. 이제 로그인 테이블을 생성하면 된다.

mysql> CREATE TABLE login( 
    -> id VARCHAR(40) NOT NULL,
    -> password VARCHAR(40) NOT NULL);
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO login(id, password) VALUES("kingmj","1234a");
Query OK, 1 row affected (0.01 sec)

mysql> select * from login;
+--------+----------+
| id     | password |
+--------+----------+
| kingmj | 1234a    |
+--------+----------+
1 row in set (0.00 sec)

너무 길어질 것 같아서 다음 시간에 나머지는 작성해야겠다.

이번에는 mysql 설치와 database(schema) 생성 및 테이블 생성, 조회에 대해 알아보았다. 다음 시간에는 MyBatis를 활용하여 연결 후 login 페이지를 생성해보아야겠다.