+ 실습에 들어가기전에
 
 

 

( 이번실습은 매우매우 중요해서 정말 열심히 공부해보겠습니다. ※)

(★★★★★ 중요 ★★★★★)

 
 
 
들어가기에 앞서, 이번 실습은 준비물이 필요합니다.
 
🌍01. Oracle Database Client로 DB 설치하기
링크: Oracle Instant Client Downloads | Oracle 대한민국

Oracle Instant Client Downloads | Oracle 대한민국

www.oracle.com

 
 
 
🌍02. 자신의 Oracle 계정을 만들어서 등록하기
 

 
 
 
🌍03. Oracle SQL Developer 다운받기
링크 : SQL Developer | Oracle 대한민국

SQL Developer

Oracle SQL Developer는 무료 개발 환경으로 전통적인 배포 및 클라우드 배포 모두에서 Oracle Database의 관리를 간소화해 줍니다. 또한 PL/SQL 애플리케이션, 쿼리 도구, DBA 콘솔, 보고서 인터페이스 등의

www.oracle.com

 
 
각자 환경에 맞게 설치하면 준비 끝입니다. 그러면, 실습시작 해볼게요~~(화이팅👏👏👏👏)
 
 

 
 
 
✅ 00. JDBCTemplate 란?
 
JdbcTemplate은 스프링 프레임워크에서 제공하는 JDBC(Java Database Connectivity)를 사용하는 데 도움을 주는 유틸리티 클래스입니다. JDBC는 자바 애플리케이션에서 관계형 데이터베이스와 통신하기 위한 표준 API를 제공합니다.
JdbcTemplate은 JDBC의 복잡한 부분을 추상화하고 간단한 방식으로 데이터베이스와 상호작용할 수 있도록 해줍니다. 이를 통해 개발자는 SQL 쿼리를 실행하고 결과를 처리하는 데 필요한 반복적인 작업을 줄일 수 있습니다.
JdbcTemplate의 주요 기능은 다음과 같습니다:
 
   1. SQL 실행: JdbcTemplate은 SQL 쿼리를 실행하기 위한 여러 메서드를 제공합니다. 이를 통해 SELECT, INSERT, UPDATE, DELETE 등의 다양한 작업을 수행할 수 있습니다.
   2. 파라미터 바인딩: JdbcTemplate은 SQL 쿼리에 파라미터를 바인딩하는 기능을 제공합니다. 이를 통해 SQL 인젝션과 같은 보안 문제를 방지할 수 있습니다.
   3. 결과 추출: JdbcTemplate은 SQL 쿼리의 결과를 추출하고 처리하는 데 사용할 수 있는 다양한 메서드를 제공합니다. 이를 통해 결과를 객체로 변환하거나 원시 데이터 형식으로 처리할 수 있습니다.
   4. 예외 처리: JdbcTemplate은 데이터베이스 작업 중 발생할 수 있는 예외를 처리하는 방법을 제공합니다. 이를 통해 데이터베이스와의 통신 중 예기치 않은 상황에 대비할 수 있습니다.
 
JdbcTemplate은 스프링의 핵심 모듈인 스프링 JDBC에 포함되어 있으며, 스프링 애플리케이션에서 데이터베이스와의 효율적인 상호작용을 지원하는 데 널리 사용됩니다.

 
 
(출처-ChatGPT)
 

 
 
 
✅ 01. 소개
가. 스프링 JDBC(Java DataBase Connectivity)
 

 
이번실습에서 DB를 연동하기 위해 사용할 문장입니다. 
 
 
나. JDBC 템플릿
 

 
 
 
다. 템플릿 패턴
- 추상클래스가 정의된 방식/템플릿을 노출해서 메소드를 호출
- 하위(서브)클래스가 필요할 때마다 메소드 구현체를 override 할 수 있지만, 호출은 추상 클래스에 의해 정의된 것과 동일한 방식
- 행동패턴에 속함
- 예시 이미지
 
 
 

 
 
- 1 단계: 추상클래스 만들기
- 2단계: 구현 클래스 만들기
- 3단계: 데모클래스 실행 및 결과보기
 
 
라. JDBC 템플릿
 

 
 
 
마. 제공 메소드
 

 
 
 
 
02. 메이븐 프로젝트 만들기
가. 스프링 컨텍스트(spring-context) 설정
 

 
 
 
나. pom 파일 부분 수정
이번코드에서는 pom.xml 도 부분 수정을 해야합니다.
 

 
 pom.xml 
 

 
spring-(jdbc,tx)-4.3.6.jar 이 pom.xml 에 적용되도록 해줍니다.
 
 
 
 
 
 
다. 데이터베이스 드라이버 설정
 
 

 
이 부분은 mysql DB 사용하시는 분들만 확인하시면됩니다!
 
 
 
라. 구현 방법 (전체구성)
사용
pakages : org.kitri.jdbctemplate.dao
                    org.kitri.jdbctemplate.dao.impl
                    org.kitri.jdbctemplate.dto
                    org.kitri.jdbctemplate.main
 
class : EmployeeDao.java
              EmployeeDaoImpl.java
              Employee.java
              Test.java
 
xml : config.xml
            pom.xml
 

 
 
 
pakages : org.kitri.jdbctemplate.dao
Class : EmployeeDao.java
 

 
 

package org.kitri.jdbctemplate.dao;

import org.kitri.jdbctemplate.dto.Employee;

public interface EmployeeDao {
	int create(Employee employee);

	int update(Employee employee);

	int remove(int id);
}

 
 
이 코드는 데이터베이스에서 직원(Employee) 정보를 조작하는 DAO(Data Access Object)를 정의하는 인터페이스입니다. 각 메서드는 데이터베이스에서 직원 정보를 생성(create), 업데이트(update), 삭제(remove)하는 데 사용됩니다.
 
 
 
 
pakages : org.kitri.jdbctemplate.dao.impl
Class : EmployeeDaoImpl.java
 
 

 

package org.kitri.jdbctemplate.dao.impl;

import org.kitri.jdbctemplate.dao.EmployeeDao;
import org.kitri.jdbctemplate.dto.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

//@Component
@Component("emp")
public class EmployeeDaoImpl implements EmployeeDao {

	@Autowired
	private JdbcTemplate jdbctemplate;
	
	@Override
	public int create(Employee employee) {
		String insertSql = "insert into employee values(?, ?, ?)";
		int count = 
		jdbctemplate.update(insertSql, 
				Integer.valueOf(employee.getId()),
				employee.getFirstName(),
				employee.getLastName());
		return count;
	}

	@Override
	public int update(Employee employee) {
		return 0;
	}

	@Override
	public int remove(int id) {
		return 0;
	}
	
	public JdbcTemplate getJdbctemplate() {
		return jdbctemplate;
	}

	public void setJdbctemplate(JdbcTemplate jdbctemplate) {
		this.jdbctemplate = jdbctemplate;
	}
}

 
 
이 클래스는 Spring 프레임워크에서 관리되는 빈으로서, 데이터베이스와의 상호 작용을 담당합니다. 필요에 따라 메서드를 추가하거나 수정하여 데이터베이스와의 상호 작용을 확장할 수 있습니다.
 
 
 
 
pakages : org.kitri.jdbctemplate.dto
Class :  Employee.java
 
 

 

package org.kitri.jdbctemplate.dto;

public class Employee {
	private int id;
	private String firstName;
	private String lastName;

	public Employee() {
	}

	public Employee(int id, String firstName, String lastName) {
		this.id = id;
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public int getId() {
		return id;
	}

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

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

}

 
이 클래스는 데이터베이스나 다른 계층 간에 직원 정보를 전달하는 데 사용됩니다. 주로 DAO(Data Access Object)나 서비스 계층에서 데이터베이스에서 읽어온 직원 정보를 객체로 변환하거나, 사용자가 입력한 직원 정보를 데이터베이스에 전달할 때 사용됩니다.
 
 
 
 
 
pakages :  org.kitri.jdbctemplate.main
Class : Test.java
 
 

 
 

package org.kitri.jdbctemplate.main;

import java.sql.SQLException;
import java.util.Scanner;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class Test {

	private static ClassPathXmlApplicationContext ctx;

	public static void main(String[] args) throws SQLException {
		// 스프링 컨테이너 생성
		ctx = new ClassPathXmlApplicationContext("classpath:org/kitri/jdbctemplate/main/config.xml");
		// 빈 객체 사용
		JdbcTemplate jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbctemplate");
		String insertSql = "insert into employee values(?, ?, ?)";
		int rowCount = jdbcTemplate.update(insertSql, Integer.valueOf(1), "길동", "홍");
//		jdbcTemplate.getDataSource().getConnection().commit();
		System.out.println("영향받은 행수: " + rowCount);
		System.out.println("계속 하려면 엔터>>>");
		Scanner scan = new Scanner(System.in);
		scan.nextLine();
		String updateSql = "update employee set firstname = ?, lastname = ? " + "where id = ?";
		rowCount = jdbcTemplate.update(updateSql, "길동5", "홍", Integer.valueOf(1));
		System.out.println("영향받은 행수: " + rowCount);
		// 스프링 컨테이너 소멸

		scan.close();
		ctx.close();
	}
}

 
이코드를 실행하면 employee 라는 테이블에 insert into employee table문으로 인해 TABLE 값에 홍길동이 저장되고, ENTER 키를 누르게되면 홍길동5로 TABLE 값이 바뀌게 설정해놨다.
 
 
 
xml : config.xml
 
여기서 주의해야할 점은 경로인데 저같은 경우에는
호스트주소 : 192.168.10.11
이름 : oracle
아이디/비번 : dst04/dst04
SID : DB19
를 사용하였습니다.
 
각자 만든 계정으로 주소를 바꾸지 않으면 정상적으로 실행되지않는다. (사실 나도 잘몰라서 계속 실수했다 ㅋ쿠ㅜ 하면서 배우자!)
 

 

 

<?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"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:c="http://www.springframework.org/schema/c"
	xmlns:util="http://www.springframework.org/schema/util"
	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
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">

	<context:component-scan
		base-package="org.kitri.jdbctemplate" />

	<bean name="datasource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource"
		p:driverClassName="oracle.jdbc.OracleDriver"
		p:url="jdbc:oracle:thin:@192.168.10.11:1521:DB19"
		p:username="dst04" p:password="dst04" />

	<bean name="jdbctemplate"
		class="org.springframework.jdbc.core.JdbcTemplate"
		p:dataSource-ref="datasource" />


</beans>

 
 
 
 
마. 실행방법
 
모든 코드구성은 끝이 났다. 이제 SQL Developer 에서 TABLE 을 생성해보자 
 

 
 
 
우선 성과 이름을 구분할 수 있게 employee table 을 생성해주었다. 
 

 
 
 
바뀐 값을 적용해주기 위해서는 commit 을 하거나, 재실행 해주면 된다. (저는 commit으로했어요~~)
 
 
 
이제 Test.java 클래스를 실행시켜주면
 

 
 
정상적으로 경로가 설정되었으면, 영향받은 행수: 1 이라는 문구가 뜬다.
 
 

 
SELECT 문으로 TABLE 확인 결과 정삭적으로 DB 연결이 되었다.!!!(감격)
 

 
 
다시 Test로 돌아가서 ENTER를 눌러보면
 
 

 
 
 
영향받은 행수가 생겼다. 다시 SQL 로 넘어가서 검색을 해보면,
 
 

 
홍길동5로 TABLE이 UPDATE 가 된것을 볼 수 있다. (야호!)
 
 
 
 
 
 새롭게 알아낸 사실~~~

 
 
이 실습을 통해 Eclipse -> SpringBoot ->SQL DB 연동을 할 수 있게 되었으며,  앞으로의 실습에서 가장 중요한 과정을 배우게 되었다. (하면 할수록 코딩이 재밌어진다헤헤)
 

 
 
 

'Spring' 카테고리의 다른 글

08. Spring - Mybatis  (5) 2024.05.02
07. Spring - ★JDBCTemplate 연동(응용)★  (0) 2024.04.24
05. Spring - Interface 주입  (2) 2024.04.22
04. Spring- Auto Wiring(@Autowiring, @Qualifier)  (3) 2024.04.19
03. Spring- Properties  (3) 2024.04.18
2024. 4. 23. 16:54
1 2 3 4 5 6 ··· 8