SpringDB

RedNine·2023년 2월 16일
0

스프링

목록 보기
2/17
post-thumbnail

테이블 생성

  1. pom.xml -> 스프링 + DB연동 라이브러리 다운(설정) + 추가한다.
    • 오라클의 다운로드 받을 수 있는 Repository (구글검색)
    • maven => 오라클을 다운로드받는 위치가 변경이 된 경우 등록
    • <repository>을 통해서 위치를 지정해준다.
    • <url>http://maven.jahia.org/maven2</url>
🎈pom.xml
 <repositories>
	 <repository>
	    <id>oracle</id>
	    <name>oracle jdbc respository</name>
	    <url>http://maven.jahia.org/maven2</url>
	 </repository>
</repositories> 

    =>등록
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>12.1.0.1</version>
      </dependency>
  1. xml파일 설정 -> 빈즈 설정 -> DB연동(DI)
🎈Bean.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-4.2.xsd">

1) DB연결(dataSource)
=> driver, url, username, password지정(DB연결 구성요소)

<<bean id="dataSource" 
	   class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
	   <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
	   <property name="username" value="scott" />
	   <property name="password" value="tiger" />
	</bean>

2) DB연결시켜서 가져올 수 있는 빈즈객체
public void setDs(DataSource ds){this.ds=ds;}

<<bean id="studentJDBCTemplate" class="studentdb.StudentJDBCTemplate">
	<property name="ds" ref="dataSource" />
</bean>
  • 테이블 생성

    • 오라클
      create table student(
      id int not null,
      name varchar(20) not null,
      age int not null,
      primary key(id));
  1. 자바 App~->DTO,DAO,main() 가진 클래스 실행
  • DBConnectionMgr.java, MemberDAO
  • DTO, VO 같은 의미

업무에 따라서 인터페이스를 이용하여 추상메서드를 선언한다.
=> 결합도가 강한 프로그램보다 결합도가 약한 프로그램을 개발하기 위함이다.
(유연한 구조를 만들어주기 위해서)

🎈StudentDAO 인터페이스
 //import java.sql.*; Connection,Pre~
import javax.sql.DataSource; //DB연결할때 필요
import java.util.List; //Select할때 필요(여러개의 레코드필요)

//DB연동을 초기화 -> Student에 접속(DTO) -> insert,update,delete,select 환경설정
public interface StudentDAO { //StudentService

	//1.DB연결을 시켜주는 메서드(초기화) -> DataSource객체 -> DB연동
	public void setDs(DataSource ds);//getConnection()
	
	//2.insert
	public void create(Integer id,String name,Integer age);//실사용은 create(Student st)
	
	//3.학생정보 -> pk로 검색 select * from student where id=1;
	public Student getStudent(Integer id);//~(int id);
	
	//4.학생들 전체 정보 select * from student 
	public List<Student> listStudents();
	
	//5.학생정보 삭제 delete from student where id=2;
	public void delete(Integer id);
	
	//6.학생정보를 수정 -> update 테이블명 set 필드명=값,,,, where조건식
	public void update(Integer id,Integer age);//실사용은 update(Student st);

}
🎈Bean.xml
<!--1.DB연결(dataSource) driver, url, username, password지정(DB연결 구성요소) -->
	<bean id="dataSource" 
	   class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
	   <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
	   <property name="username" value="scott" />
	   <property name="password" value="tiger" />
	</bean>
	
	<!--2.DB연결시켜서 가져올 수 있는 빈즈객체 
		public void setDs(DataSource ds){this.ds=ds;}
	 -->
	<bean id="studentJDBCTemplate" class="studentdb.StudentJDBCTemplate">
		<property name="ds" ref="dataSource" />
	</bean>

결과확인

ds => org.springframework.jdbc.datasource.DriverManagerDataSource@38af9828
setDs()호출되서 DB연결됨(ds)
st => studentdb.StudentJDBCTemplate@6b0d80ed
생성된 레코드id => 1, name => 김갑자, age => 23
생성된 레코드id => 2, name => 엄홍길, age => 45
생성된 레코드id => 3, name => 박영진, age => 34
생성된 레코드id => 4, name => 엄숙희, age => 32
생성된 레코드id => 5, name => 호날두, age => 51
전체 데이터 검색중...
mapRow() 호출됨(rowNum) => 0
mapRow() 호출됨(rowNum) => 1
mapRow() 호출됨(rowNum) => 2
mapRow() 호출됨(rowNum) => 3
mapRow() 호출됨(rowNum) => 4
id=> 1
name=> 김갑자
age=> 23
id=> 2
name=> 엄홍길
age=> 45
id=> 3
name=> 박영진
age=> 34
id=> 4
name=> 엄숙희
age=> 32
id=> 5
name=> 호날두
age=> 51
수정된 레코드 id=> 2,age=> 37
삭제시킬 Record번호는 3번
삭제된 레코드 이름(id) =>3
mapRow() 호출됨(rowNum) => 0
id=> 5
name=> 호날두
age=> 51

SQL> select * from student;

        ID NAME                        AGE
---------- -------------------- ----------
         1 김갑자                       23
         2 엄홍길                       37
         4 엄숙희                       32
         5 호날두                       51

0개의 댓글

관련 채용 정보