상세 컨텐츠

본문 제목

[1.1] 초난감DAO

토비의스프링

by kwanghyup 2020. 7. 30. 11:59

본문

 

먼저 Maven Project를 생성하자 

 

 

maven-archetype-quickstart를 선택하고 next버튼을 클릭한다. 

 

 

다음과 같이 Group Id와 Artifact Id를 주고  Finish버튼을 클릭한다.

 

pom.xml에서 다음과 같이 수정한다. 

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>
	<!-- MySQL을 사용하기 위한 의존설정 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.13</version>
    </dependency>    
</dependencies>

 

이제 Build Path를 수정할 차례다.

해당 프로젝트의 JRE System Library를 우클릭한 후 

Preferences를 선택한다. 

Execution enviroment를 선택하면 버전 목록이 나오는데

여기서 1.8을 선택한다. 

 

이제 실습 할 준비를 마쳤다. 

 

사용자 정보를 저장할 User클래스를 만들자. 

(게터세터 자동 생성 메뉴 단축키 : Cmd + Alt + s)

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;
	} 	
}

 

 

이제 User 오브젝트가 담긴 정보가 실제로 보관될 DB의 테이블을 만들자. 

MySQL를 이용하여 다음의 쿼리를 실행한다. 

 

drop database if exists tobiespring;
create database tobiespring;

use tobiespring;

drop table if exists users;
create table users(
	id varchar(10) primary key,
    name varchar(20) not null,
    password varchar(20) not null
);

 

 

사용자 정보를 DB에 넣고 관리할 수 있는 UserDao클래스를 만들어보자. 

package springbook.user.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import springbook.user.domain.User;

public class UserDao {
	
	public void add(User user) throws ClassNotFoundException, SQLException {
		String url = "jdbc:mysql://localhost:3306/tobiespring?characterEncoding=utf8&serverTimezone=UTC";     
		Class.forName("com.mysql.cj.jdbc.Driver");
		Connection c = DriverManager.getConnection(url,"root","12345678");
		
		String sql = "insert into users values(?,?,?)";
		PreparedStatement ps = c.prepareStatement(sql);
		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 {
		String url = "jdbc:mysql://localhost:3306/tobiespring?characterEncoding=utf8&serverTimezone=UTC";       
		Class.forName("com.mysql.cj.jdbc.Driver");
		Connection c = DriverManager.getConnection(url,"root","12345678");
		
		String sql = "select * from users where id = ?";
		PreparedStatement ps = c.prepareStatement(sql);
		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;
	}
	
    
}

 

만들어진 코드의 기능을 검증해보자. 

다음과 같이 UserDao내에 main()메서드를 이용하자.

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
	
		UserDao dao = new UserDao();
		
		User user = new User();
		user.setId("whiteship");
		user.setName("백기선");
		user.setPassword("married");
		
		dao.add(user);
		
		System.out.println(user.getId() +" 등록성공");
				
	}

 

'토비의스프링' 카테고리의 다른 글

[1.6] 싱글톤 레지스트리와 오브젝트 스코프  (0) 2020.10.27
[1.5]Spring IoC  (0) 2020.10.27
[1.4] 제어의 역전  (0) 2020.10.27
[1.3] DAO의 확장  (0) 2020.10.27
[1.2] DAO의 분리  (0) 2020.07.30

관련글 더보기

댓글 영역