SlideShare a Scribd company logo
스프링프레임워크 & 마이바티스
(Spring Framework, MyBatis)
4-3. Spring JDBC에서 DB 접근하는 방법
 JdbcTemplate : 젂형적인 Spring JDBC 접근법으로 SQL을 실행하며 자주 사용된다.
 NamedParameterJdbcTemplate : 젂형적인 JDBC의 ?(Placeholder) 대신에 이름있는 바인딩 파
라미터를 제공하기 위한 것이다.
 SimpleJdbcTemplate : JdbcTemplate + NamedParameterJdbcTemplate
 SimpleJdbcInsert : 최소한의 구성으로 Insert가 가능하도록 지원하며 DataSource를 가짂 클래
스를 인스턴스한 직후 withTableName 메소드를 불러 테이블 이름을 지정해야 한다.
 SimpleJdbcCall : 최소한의 설정으로 데이터베이스 내에 저장된 저장 프로시저, 함수 등을 호
출하도록 지원한다.
 SqlUpdate : 재사용 가능한 SQL DML(insert, update, dalete) 구문을 생성한다.
 StoredProcedure : RDB의 저장 프로시저에 대한 추상 수퍼 클래스, 다양한 execute 메소드를
제공한다.
4-3-1. Spring JDBC에서 DB 접근하는 방법 – jdbcTemplate
 모든 형태의 SQL 구문을 실행해서 원하는 결과 타입을 반홖한다.
 스프링의 모든 데이터 접근 프레임워크는 템플릿 클래스를 포함하는데 이 경우 템플릿 클래
스는 JdbcTemplate 클래스이다.
 JdbcTemplate 클래스가 작업하기 위해 필요한 것은 DataSource 이며 스프링의 모든 DAO 템
플릿 클래스는 스레드에 안젂하기 때문에 애플리케이션 내의 각각의 DataSource에 대해서
하나의 JdbcTemplate 인스턴스만을 필요로 한다.
public class StudentDao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTeamplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}//:
}///~
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id=“studentDao"
class="oraclejava.training.jdbc.StudentDao">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-
method="close" >
<property
name="driverClassName“><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="url“><value>jdbc:oracle:thin:@192.168.0.27:1521:onj</value></property>
<property name="username“><value>scott</value></property>
<property name="password“><value>tiger</value></property>
</bean>
4-3-1-1. Maven, Gradle에서 오라클 설정
 그래들 설정
1. 메이븐 로컬 레포지터리에 오라클 JDBC Driver 설치를 위한 메이븐을 설치하자.
https://maven.apache.org/download.cgi 에서 binary zip 파일을 다운받자. (apache-maven-
3.3.3-bin.zip)
2. 적당히 압축을 풀자. (cjava 아래)
압축을 출고 bin 폴더를 홖경변수에서 path에 추가하자. (C:java3apache-maven-
3.3.3bin)
3. Oracle JDBC Driver를 다운받자.
http://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html (오라클 11g용
ojdbc6.jar)
4. 다운받은 폴더에서 CMD로 도스창을 띄운 후 아래 명령을 실행하여 로컬 메이븐 레포지터
리에 저장하자.
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -
Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true
5. build.grdle을 작성
apply plugin : 'java'
apply plugin : 'application'
mainClassName = "onj.edu.jdbc.JdbcClient"
dependencies {
compile 'org.springframework:spring-context:4.2.4.RELEASE'
compile 'org.springframework:spring-jdbc:4.2.4.RELEASE'
runtime 'commons-dbcp:commons-dbcp:1.2.2'
runtime 'com.oracle:ojdbc6:11.2.0.4'
}
repositories {
mavenCentral()
mavenLocal()
}
 메이븐 설정
<dependencies>
……
<!-- DBCP -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- ORACLE -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
……
</dependencies>
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBCRepository</name>
<url>http://maven.jahia.org/maven2</url>
</repository>
</repositories>
4-3-1-2. 마리아DB 및 HeidiSQL 설치
1. https//download.mariadb.org에 접속 후 “Download 10.1.10 Stable Now!”를 클릭
2. 자신의 홖경에 맞는 파일을 다운로드 한다.
3. 적당한 경로에 압축을 풀고 bin 폴더로 가서 인스톨 하자.(관리자 권한으로 CMD 실행할 것,
datadir : DB설치경로, service : 서비스이름, password : root 비밀번호)
압축푼경로bin>mysql_install_db --datadir=DB설치경로 --service=MySQL --password=1111
Running bootstrap
2016-05-02 9:45:28 7540 [Note] D:dev-ecommercemariadb-10.1.10-winx64binmysq
ld.exe (mysqld 10.1.10-MariaDB) starting as process 7568 ...
Removing default user
Setting root password
Creating my.ini file
Registering service 'MySQL'
Creation of the database was successfull
4. 원도우 서비스에 보면 MySQL 이라는 서비스가 떠 있을 것이다.
5. 한글 사용을 위해 DB설치경로 아래 my.ini 파일을 열어 수정하자.
[mysqld]
datadir= DB설치경로
[client]
default-character-set = utf8
[mysqld]
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
6. MySQL 서비스 시작
압축푼경로bin>sc start MySQL
7. DB에 접속해서 데이터 등을 확인하기 위해 클라이언트도 설치하자.
http://www.heidisql.com/download.php에 접속하여 HeidiSQL을 설치하자.
설치파일을 실행하면 HeidiSQL이 설치되며 실행한 후 신규 버튼을 클릭 후 root비번(“1111”)을 입
력하면 접속된다.
4-3-1-3. 간단한 Spring JDBC jdbcTemplate 예제
 마리아DB에서 EMP 테이블의 데이터를 Spring JDBC의 JdbcTemplate을 이용하여 화
면에 출력하는 갂단한 예제를 작성해 보자.
STS에서
File -> New -> Project -> Spring Legacy Project
Project name : jdbc1
Simple Spring Maven 선택
Finish 클릭
[마리아DB 및 데이터소스 사용을 위해 pom.xml에 다음 의존성을 추가]
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
[HeidiSQL에서 jdbc1 이라는 데이터베이스와 EMP 테이블 및 데이터를 생성하자.]
create table emp
(
empno int(4) not null auto_increment,
ename varchar(50),
sal int(4),
primary key (empno)
) ENGINE=InnoDB;
insert into emp(ename, sal) values ('1길동', 1000);
insert into emp(ename, sal) values ('2길동', 2000);
insert into emp(ename, sal) values ('3길동', 3000);
[EmpDao.java]
package jdbc;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
public class EmpDao {
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
List getNames() {
String sql = "select * from emp";
return jdbcTemplate.queryForList(sql);
}
}
[src/main/resources/app-jdbc.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.xsd">
<bean id="EmpDao" class="jdbc.EmpDao">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/jdbc1</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>1111</value>
</property>
</bean>
</beans>
[JdbcClient.java]
package jdbc;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
public class JdbcClient {
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("app-jdbc.xml");
ctx.refresh();
EmpDao e = (EmpDao)ctx.getBean("EmpDao");
System.out.println(e.getNames());
ctx.close();
}
}
4-3-1-4. Spring JDBC 내부 콜백(PreparedStatementCreator,
PreparedStatementSetter)
 PreparedStatementCreator
//이 인터페이스는 다음과 같은 하나의 메소드를 제공한다.
public PreparedStatement createPreparedStatement(Connection con) throws SQLException;
//JdbcTemplate이 아래 클래스를 호출할 때 실행된 SQL로그를 남긴다.
//SqlProvider는 getSql() 이라는 메소드를 제공, SQL문자열을 JdbcTemplate에서 사용가능하도록
제공한다.
public class InsertPersonStatementCreator implements PreparedStatementCreator, SqlProvider
{
private String sql = “INSERT INTO ( id, firstname, lastname) VALUES ( ? , ? ?)”;
public PreparedStatement createPreparedStatement(Connection con) ..
return con.preparedStatement(sql);
}//:
public String getSql() { return sql; }
}
 PreparedStatementSetter
//이 인터페이스는 SQL 파라미터를 Setting하는 메소드를 제공한다.
void setValues(PreparedStatement ps) throws SQLException;
private Person person;
public void setVales(PreparedStatement ps) throws SQLException {
ps.setInt (1, person.getId().intValue());
ps.setString (2, person.getFirstName());
ps.setString (3, person.getLastName());
}
…
4-3-1-5. jdbcTemplate의 execute 메소드
 대개 SQL문자열로 부터 PreparedStatement를 생성하고 파라미터를 바인딩 하는 작업을 많이
하므로 JdbcTemplate은 execute 메소드를 제공한다.
 주로 DDL 처리용으로 아래와 같은 경우 백그라운드에서 JdbcTemplate이 PreparedStatement
와 PreparedStatementSetter를 생성 시킨다.
public int insertPerson(Person person) {
String sql = “insert into person (id, firstname, lastname) values (?,?,?)”;
Object[] params = new Object[] {
person.getId(),
person.getFirstName(),
person.getLastName()
};
return jdbcTemplate.execute(sql, params);
}

More Related Content

What's hot (20)

PPTX
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
자바모델 클래스에 날개를달자_롬복(Lombok)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바모델 클래스에 날개를달자_롬복(Lombok)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[#9.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)]_재직자환급교육/실업자환급교육/구로IT학원/스프링교...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#12.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_구로IT학원, 국비지원학원,재직자/실업자교육학원,스...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 

Viewers also liked (7)

PDF
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#29.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#31.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
#11.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원학원,재직자/실업자교육학원,스프링교육,마이바...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#29.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#31.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#11.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원학원,재직자/실업자교육학원,스프링교육,마이바...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Ad

Similar to (IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis) (20)

PPTX
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
Jstl_GETCHA_HANJUNG
Jung Han
 
PDF
[162] jpa와 모던 자바 데이터 저장 기술
NAVER D2
 
PDF
Android ndk jni 설치및 연동
Sangon Lee
 
PDF
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
수홍 이
 
PDF
02.실행환경 실습교재(데이터처리)
Hankyo
 
PDF
Ksug2015 jpa5 스프링과jpa
Younghan Kim
 
PDF
overview of spring4
Arawn Park
 
PDF
SPARK SQL
Juhui Park
 
PPTX
Node.js and react
HyungKuIm
 
PPTX
Spring data jpa
Taesin Um
 
PPTX
Jdk(java) 7 - 5. invoke-dynamic
knight1128
 
PDF
SpringCamp 2013 : About Jdk8
Sangmin Lee
 
PDF
Db프로그래밍 환경 설정(131062 장택순)
TaekSoon Jang
 
PDF
Mean 스택을 사용한 IoT 개발
Jay Park
 
DOC
제1회 Tech Net Sql Server 2005 T Sql Enhancements
beamofhope
 
PPTX
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
EunChul Shin
 
PDF
02.실행환경 교육교재(데이터처리)
Hankyo
 
PDF
Scala for play
Brandon Choi
 
스프링프레임워크 & 마이바티스 ☆ 무.료 강의자료 제공 中
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Jstl_GETCHA_HANJUNG
Jung Han
 
[162] jpa와 모던 자바 데이터 저장 기술
NAVER D2
 
Android ndk jni 설치및 연동
Sangon Lee
 
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
수홍 이
 
02.실행환경 실습교재(데이터처리)
Hankyo
 
Ksug2015 jpa5 스프링과jpa
Younghan Kim
 
overview of spring4
Arawn Park
 
SPARK SQL
Juhui Park
 
Node.js and react
HyungKuIm
 
Spring data jpa
Taesin Um
 
Jdk(java) 7 - 5. invoke-dynamic
knight1128
 
SpringCamp 2013 : About Jdk8
Sangmin Lee
 
Db프로그래밍 환경 설정(131062 장택순)
TaekSoon Jang
 
Mean 스택을 사용한 IoT 개발
Jay Park
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
beamofhope
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
EunChul Shin
 
02.실행환경 교육교재(데이터처리)
Hankyo
 
Scala for play
Brandon Choi
 
Ad

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

PDF
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[IT교육/IT학원]Develope를 위한 IT실무교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[IT교육/IT학원]Develope를 위한 IT실무교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)

  • 1. 스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis) 4-3. Spring JDBC에서 DB 접근하는 방법  JdbcTemplate : 젂형적인 Spring JDBC 접근법으로 SQL을 실행하며 자주 사용된다.  NamedParameterJdbcTemplate : 젂형적인 JDBC의 ?(Placeholder) 대신에 이름있는 바인딩 파 라미터를 제공하기 위한 것이다.  SimpleJdbcTemplate : JdbcTemplate + NamedParameterJdbcTemplate  SimpleJdbcInsert : 최소한의 구성으로 Insert가 가능하도록 지원하며 DataSource를 가짂 클래 스를 인스턴스한 직후 withTableName 메소드를 불러 테이블 이름을 지정해야 한다.  SimpleJdbcCall : 최소한의 설정으로 데이터베이스 내에 저장된 저장 프로시저, 함수 등을 호 출하도록 지원한다.  SqlUpdate : 재사용 가능한 SQL DML(insert, update, dalete) 구문을 생성한다.  StoredProcedure : RDB의 저장 프로시저에 대한 추상 수퍼 클래스, 다양한 execute 메소드를 제공한다. 4-3-1. Spring JDBC에서 DB 접근하는 방법 – jdbcTemplate  모든 형태의 SQL 구문을 실행해서 원하는 결과 타입을 반홖한다.  스프링의 모든 데이터 접근 프레임워크는 템플릿 클래스를 포함하는데 이 경우 템플릿 클래 스는 JdbcTemplate 클래스이다.  JdbcTemplate 클래스가 작업하기 위해 필요한 것은 DataSource 이며 스프링의 모든 DAO 템 플릿 클래스는 스레드에 안젂하기 때문에 애플리케이션 내의 각각의 DataSource에 대해서 하나의 JdbcTemplate 인스턴스만을 필요로 한다. public class StudentDao { private JdbcTemplate jdbcTemplate; public void setJdbcTeamplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; }//: }///~
  • 2. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> <bean id=“studentDao" class="oraclejava.training.jdbc.StudentDao"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate"/> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy- method="close" > <property name="driverClassName“><value>oracle.jdbc.driver.OracleDriver</value></property> <property name="url“><value>jdbc:oracle:thin:@192.168.0.27:1521:onj</value></property> <property name="username“><value>scott</value></property> <property name="password“><value>tiger</value></property> </bean> 4-3-1-1. Maven, Gradle에서 오라클 설정  그래들 설정 1. 메이븐 로컬 레포지터리에 오라클 JDBC Driver 설치를 위한 메이븐을 설치하자. https://maven.apache.org/download.cgi 에서 binary zip 파일을 다운받자. (apache-maven- 3.3.3-bin.zip) 2. 적당히 압축을 풀자. (cjava 아래) 압축을 출고 bin 폴더를 홖경변수에서 path에 추가하자. (C:java3apache-maven- 3.3.3bin) 3. Oracle JDBC Driver를 다운받자. http://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html (오라클 11g용 ojdbc6.jar)
  • 3. 4. 다운받은 폴더에서 CMD로 도스창을 띄운 후 아래 명령을 실행하여 로컬 메이븐 레포지터 리에 저장하자. mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 - Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true 5. build.grdle을 작성 apply plugin : 'java' apply plugin : 'application' mainClassName = "onj.edu.jdbc.JdbcClient" dependencies { compile 'org.springframework:spring-context:4.2.4.RELEASE' compile 'org.springframework:spring-jdbc:4.2.4.RELEASE' runtime 'commons-dbcp:commons-dbcp:1.2.2' runtime 'com.oracle:ojdbc6:11.2.0.4' } repositories { mavenCentral() mavenLocal() }  메이븐 설정 <dependencies> …… <!-- DBCP --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- ORACLE --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.1.0.7.0</version> </dependency> ……
  • 4. </dependencies> <repositories> <repository> <id>oracle</id> <name>ORACLE JDBCRepository</name> <url>http://maven.jahia.org/maven2</url> </repository> </repositories> 4-3-1-2. 마리아DB 및 HeidiSQL 설치 1. https//download.mariadb.org에 접속 후 “Download 10.1.10 Stable Now!”를 클릭 2. 자신의 홖경에 맞는 파일을 다운로드 한다.
  • 5. 3. 적당한 경로에 압축을 풀고 bin 폴더로 가서 인스톨 하자.(관리자 권한으로 CMD 실행할 것, datadir : DB설치경로, service : 서비스이름, password : root 비밀번호) 압축푼경로bin>mysql_install_db --datadir=DB설치경로 --service=MySQL --password=1111 Running bootstrap 2016-05-02 9:45:28 7540 [Note] D:dev-ecommercemariadb-10.1.10-winx64binmysq ld.exe (mysqld 10.1.10-MariaDB) starting as process 7568 ... Removing default user Setting root password Creating my.ini file Registering service 'MySQL' Creation of the database was successfull 4. 원도우 서비스에 보면 MySQL 이라는 서비스가 떠 있을 것이다.
  • 6. 5. 한글 사용을 위해 DB설치경로 아래 my.ini 파일을 열어 수정하자. [mysqld] datadir= DB설치경로 [client] default-character-set = utf8 [mysqld] init_connect = SET collation_connection = utf8_general_ci init_connect = SET NAMES utf8 character-set-server = utf8 collation-server = utf8_general_ci [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 6. MySQL 서비스 시작 압축푼경로bin>sc start MySQL 7. DB에 접속해서 데이터 등을 확인하기 위해 클라이언트도 설치하자. http://www.heidisql.com/download.php에 접속하여 HeidiSQL을 설치하자.
  • 7. 설치파일을 실행하면 HeidiSQL이 설치되며 실행한 후 신규 버튼을 클릭 후 root비번(“1111”)을 입 력하면 접속된다. 4-3-1-3. 간단한 Spring JDBC jdbcTemplate 예제  마리아DB에서 EMP 테이블의 데이터를 Spring JDBC의 JdbcTemplate을 이용하여 화 면에 출력하는 갂단한 예제를 작성해 보자.
  • 8. STS에서 File -> New -> Project -> Spring Legacy Project Project name : jdbc1 Simple Spring Maven 선택 Finish 클릭 [마리아DB 및 데이터소스 사용을 위해 pom.xml에 다음 의존성을 추가] <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> <scope>runtime</scope> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> [HeidiSQL에서 jdbc1 이라는 데이터베이스와 EMP 테이블 및 데이터를 생성하자.]
  • 9. create table emp ( empno int(4) not null auto_increment, ename varchar(50), sal int(4), primary key (empno) ) ENGINE=InnoDB; insert into emp(ename, sal) values ('1길동', 1000); insert into emp(ename, sal) values ('2길동', 2000); insert into emp(ename, sal) values ('3길동', 3000); [EmpDao.java] package jdbc; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate;
  • 10. public class EmpDao { private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.jdbcTemplate = new JdbcTemplate(dataSource); } List getNames() { String sql = "select * from emp"; return jdbcTemplate.queryForList(sql); } } [src/main/resources/app-jdbc.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.xsd"> <bean id="EmpDao" class="jdbc.EmpDao"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost/jdbc1</value> </property> <property name="username"> <value>root</value>
  • 11. </property> <property name="password"> <value>1111</value> </property> </bean> </beans> [JdbcClient.java] package jdbc; import org.springframework.context.support.GenericXmlApplicationContext; import org.springframework.core.io.FileSystemResource; public class JdbcClient { public static void main(String[] args) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.load("app-jdbc.xml"); ctx.refresh(); EmpDao e = (EmpDao)ctx.getBean("EmpDao"); System.out.println(e.getNames()); ctx.close(); } } 4-3-1-4. Spring JDBC 내부 콜백(PreparedStatementCreator, PreparedStatementSetter)  PreparedStatementCreator //이 인터페이스는 다음과 같은 하나의 메소드를 제공한다. public PreparedStatement createPreparedStatement(Connection con) throws SQLException; //JdbcTemplate이 아래 클래스를 호출할 때 실행된 SQL로그를 남긴다.
  • 12. //SqlProvider는 getSql() 이라는 메소드를 제공, SQL문자열을 JdbcTemplate에서 사용가능하도록 제공한다. public class InsertPersonStatementCreator implements PreparedStatementCreator, SqlProvider { private String sql = “INSERT INTO ( id, firstname, lastname) VALUES ( ? , ? ?)”; public PreparedStatement createPreparedStatement(Connection con) .. return con.preparedStatement(sql); }//: public String getSql() { return sql; } }  PreparedStatementSetter //이 인터페이스는 SQL 파라미터를 Setting하는 메소드를 제공한다. void setValues(PreparedStatement ps) throws SQLException; private Person person; public void setVales(PreparedStatement ps) throws SQLException { ps.setInt (1, person.getId().intValue()); ps.setString (2, person.getFirstName()); ps.setString (3, person.getLastName()); } … 4-3-1-5. jdbcTemplate의 execute 메소드  대개 SQL문자열로 부터 PreparedStatement를 생성하고 파라미터를 바인딩 하는 작업을 많이 하므로 JdbcTemplate은 execute 메소드를 제공한다.  주로 DDL 처리용으로 아래와 같은 경우 백그라운드에서 JdbcTemplate이 PreparedStatement 와 PreparedStatementSetter를 생성 시킨다. public int insertPerson(Person person) { String sql = “insert into person (id, firstname, lastname) values (?,?,?)”; Object[] params = new Object[] { person.getId(), person.getFirstName(),