앞서 MySQL을 설치하였으니 이번엔 Workbench를 설치해보자.

MYSQL Workbench 란 MySQL을 GUI 방식으로 관리하는 도구이다.



Workbench설치과정은 


1. MySQL 다운로드 사이트로 접속 http://www.mysql.com/products/workbench/

    Download Now 버튼 클릭






2. 자신의 운영체제에 맞게 설치한다.







3. 대충 No thanks, just start my download 클릭







4. 다운받은 파일 압축을 풀고 실행 파일을 더블 클릭







5. Workbench 실행화면







6. 기존에 설정되어있는 root 계정으로 들어가면 정상적으로 편집기가 실행된다.








오늘은 Windows 10 환경에서 MYSQL을 설치해보겠습니다.


1. 먼저 MySQL https://dev.mysql.com/downloads/mysql/ 사이트로 가서 Windows (x86, 64-bit), ZIP Archive을 다운받습니다.




▶ No thanks, just start my download를 클릭합니다



2. 다운로드한 파일을 원하는 경로에 압축풀기 (ex C:\dev\mysql-5.7.16-winx64)



3. 시스템 환경변수 설정

윈도우키를 누르고 환경변수 검색하거나 시스템을 검색하여 위 화면처럼 시스템 속성창을 열어줍니다.



환경변수를 클릭하고 새로만들기를 클릭후 MYSQL_HOME을 추가하고, Path를 열어서 %MYSQL_HOME%\bin; 추가 후 확인을 클릭합니다.







 

4MySQL 설정파일 수정

 

 

 

 

 

 - basedir : MySQL 설치 경로

 - datadir : 데이터 저장소 경로

 - port : MySQL이 사용할 Port 번호 (기본적으로 3306 사용)

 

위 내용과 같이 작성하고 파일명과 확장자명을 my.ini 로 수정후 저장합니다.

 

 

▶ 경로를 위와 같이 설정했다면 MYSQL5.7 버전은 data폴더가 없으니 꼭 새로 생성해주도록 합니다.

 

 

5MySQL window 서비스등록

 

 

윈도우키를 누르고 cmd 입력후 관리자 권한으로 실행하기 클릭

 

명령프롬프트창에 sqld --install을 입력하면 성공적으로 서비스가 등록된다.

 

 - MySQL 서비스 등록 : mysqld --install

 - MySQL 서비스 삭제 : mysqld --remove

 

 

 

5MySQL window 서비스 시작

 

 

mysql 서비스시작은 위와 같이 진행해도되고 아래와 같이

 

 - MySQL 서비스 시작 : net start mysql

 - MySQL 서비스 종료 : net stop mysql

 

을 입력해도 됩니다.

 

▶ 만약 서비스가 정상적으로 시작되지않는다면 ?

1. mysqld --remove

2. mysqld --initialize-insecure //insecure 옵션을 주게되면 root 비밀번호가 없고, insecure 옵션을 제거하게되면 랜덤 비밀번호 생성

3. my.ini 경로 점검(특히 data폴더 존재 유무)

4. mysqld --install

5. 재확인

 

 

 

6. MySQL window 연결

 

위 과정이 다 끝났으면 루트 계정으로 접속해봅니다.

근데 cmd창에 mysql -u root -p 을 입력하니까 비밀번호가 틀렸다고 나오네요.

원래는 정상접속이 되어야하는데 mysqld --initialize 명령때문에 비밀번호가 임의로 설정된 것 같습니다.

 

비밀번호를 재설정해도록 하겠습니다.

 

1. net stop mysql 로 실행중인 서비스 종료합니다.

2. my.ini에 skip-grant-tables 추가합니다.

3. net start mysql // 서비스 재실행

4. mysql -u root // mysql (접속시도)

5. UPDATE user SET authentication_string=PASSWORD('비밀번호 입력') WHERE user='root'; (비밀번호변경)

6. flush privileges; (변경사항 적용)

7. my.ini 수정 후 mysql -u root -p 명령어로 비밀번호 적용 확인

 

 


 














  마이바티스란(Mybatis) ?


마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크입니다. 마이바티스는 JDBC로 처리하는 상당 부분의 코드와 파라미터 설정및 결과 매핑을 대신해주고, 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 어노테이션을 사용할 수 있게 해줍니다.


상기 내용은 Mybatis 홈페이지에서 긁어온 내용인데 이해하기가 어렵습니다. 간단하게 요약하면 객체지향 어플리케이션에서 관계형 데이터베이스의 연결을 쉽고 간결하게 처리하여 개발할 수 있도록 도와주는 프레임워크라고 말할 수 있겠네요.


이는 복잡한 JDBC 연결 코드를 걷어내어 생산성을 향상시켜주고, SQL과 어플리케이션 소스를 분리 시켜 유지보수성을 향상시켜줍니다. 엄청난 장점들이네요.^^


 


  마이바티스(Mybatis) 연동


필요 dependency는

1. Mybatis 라이브러리
2. Mybatis-Spring : Mybatis 와 Spring Framework 연동해주는 라이브러리
3. commons-dbcp : 자카르타 라이브러리로 Db컨넥션 풀을 관리해주는 라이브러리
4. ojdbc : 오라클 db 연동해주는 라이브러리
5. spring-jdbc : spring에서 db 컨넥션사용하기 위한 라이브러리


먼저 호환 가능한 버전을 확인해주고


MyBatis-Spring MyBatis Spring
1.0.0 and 1.0.1 3.0.1 to 3.0.5 3.0.0 or higher
1.0.2 3.0.6 3.0.0 or higher
1.1.0 or higher 3.1.0 or higher 3.0.0 or higher
1.3.0 or higher 3.4.0 or higher

3.0.0 or higher

1. pom.xml 해당 dependency를 추가합니다.


1. Mybatis

<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency>

 

2. Mybatis-Spring

<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis-spring</artifactId>

    <version>1.3.0</version>

</dependency>


3. MySQL connector-java

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.40</version>

</dependency>


4. commons-dbcp

<dependency>

    <groupId>commons-dbcp</groupId>

    <artifactId>commons-dbcp</artifactId>

    <version>1.4</version>

</dependency>


5. spring-jdbc

<dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-jdbc</artifactId>

   <version>${org.springframework-version}</version>

</dependency>



2. web.xml에 추가.


<web-app> 태그 안에 해당 소스를 추가합니다.


<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

        classpath:config/mappers/*-context.xml

    </param-value>   

</context-param>



3. mapper.xml 추가


src/main/resources에 config > mappers 디렉토리를 만들고 mappers 폴더에 

mapper-context.xml, db-context.xml, test_SQL.xml 을 생성해줍니다.


mapper-context.xml▼


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<property name="mapperLocations" value="classpath*:/config/mappers/**/*_SQL.xml" />  

</bean>

     

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">

<constructor-arg index="0" ref="sqlSessionFactory" />

</bean>

</beans>


db-context.xml


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

                        http://www.springframework.org/schema/jdbc  http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd">

     

<!-- MySQL 연결 -->

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://주소/스키마"/>

        <property name="username" value="계정"/>

        <property name="password" value="비밀번호"/>

    </bean>

</beans>


test_SQL.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper

  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  

<mapper namespace="com.test.tester.seviceimpl.TestDAO">


<select id="testSql" parameterType="string" resultType="string">

select 'OK' as Mybatis_Test from dual

</select>


</mapper>


여기까지 추가하셨다면 기본적인 준비는 끝났습니다.

다음 장에서는 Controller에서 쿼리를 찍어보도록 하겠습니다.


Spring MVC(Model / View / Controller) 흐름


요소

설명

 Client

URL로 해당 정보를 요청합니다.

DispatcherServlet

DispatcherServlet은 web.xml에 정의한 서블릿으로써, Client의 요청을 전달받아 Controller에게 전달하고, Controller가 리턴한 결과값을 지정된 View에 전달하여 알맞은 오브젝트를 생성하도록 합니다. (제어 역할)

HandlerMapping

HandlerMapping을 이용하여 Controller 검색합니다.

Controller

Client의 요청을 처리한 뒤, 처리 결과를 DispatcherServlet에 알려줍니다.

ViewResolver

처리 결과를 어떤 View에 보낼지를 결정합니다.

View

처리 결과를 보여줍니다.



Spring MVC 개발 프로세스


- 클라이언트의 요청(URL)을 제어할 DispatcherServlet을 web.xml 파일에 설정.

- Controller의 처리 결과를 어떤 View 페이지로 넘길지 결정하는 ViewResolver를 설정.

- Controller를 작성한다.

- View페이지 코드 작성.



Spring MVC 테스트


1. Spring Legacy Project를 선택후 Next



2. Spring MVC Project를 선택후 Finish



3. WEB-INF/spring/appServlet/servlet-context.xml을 연후 경로를 수정해줍니다.


<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="/WEB-INF/test/jsp/" />

<beans:property name="suffix" value=".jsp" />

</beans:bean>


4. 브라우저창에 http://localhost:8080/를 입력하면 위 화면과 같은 페이지가 뜨면서 Hello world라는 글자가 출력됩니다.




▶ 만약 404 에러페이지가 뜬다면?

test/jsp/home.jsp로 넣어주고 톰캣을 돌려보았는데 404에러가 났었는데요.

왜 404가 날까 고민하던중 이유를 찾았는데 tomcat을 추가하고 context path를 수정하지 않았네요. tomcat을 Add and Remove를 통해서 추가하면 context path는 기본적으로 project명을 따라가는데 이는 참고하도록하고 path는 아래와 같이 수정.



▶ 만약 한글이 깨진다면?


 jsp 페이지 상단에 다음과 같은 문구를 삽입합니다.


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>