코딩기록 저장소 🐕/spring(JPA)🌱

Spring JDBC ex

kimkongmom 2023. 9. 25. 17:39

 

 

 

 

 

 

▶ MyJdbcDao

클래스 내에서 데이터베이스 연결을 설정하고 해제하는 메서드를 구현합니다

 

getConnection 메서드 :
이 메서드는 Spring의 ApplicationContext를 초기화하고, MyJdbcConnection 빈을 가져와 데이터베이스 연결을 얻음
ctx를 생성하고 XML 파일 "xml02/appCtx.xml"을 사용하여 컨테이너를 설정
myJdbcConnection 빈을 가져오고, 해당 빈에서 데이터베이스 연결 객체를 얻어옴
데이터베이스 연결을 사용한 후에는 ctx를 닫아 Spring 컨테이너를 종료

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.gdu.app02.xml02;
 
import java.sql.Connection;
 
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class MyJdbcDao {
  
  private Connection con;
  private AbstractApplicationContext ctx;
  private MyJdbcConnection myJdbcConnection;
  
  private Connection getConnection() {
    ctx = new GenericXmlApplicationContext("xml02/appCtx.xml");
    myJdbcConnection = ctx.getBean("myJdbcConnection", MyJdbcConnection.class);
    ctx.close();
    return myJdbcConnection.getConnection();
  }
  
  private void close() {
    try {
      if(con != null) {
        con.close();
        System.out.println(myJdbcConnection.getUser() + " 접속 해제");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public void add() {
    con = getConnection();
    System.out.println("add() 호출");
    close();
  }
  
  public void remove() {
    con = getConnection();
    System.out.println("remove() 호출");
    close();
  }
  
  public void modify() {
    con = getConnection();
    System.out.println("modify() 호출");
    close();
  }
  
  public void select() {
    con = getConnection();
    System.out.println("select() 호출");
    close();
  }
  
}
cs

 

 

 

MyJdbcService

MyJdbcDao 객체를 사용하여 데이터베이스 작업을 수행하는 간단한 서비스 클래스

이 클래스의 인스턴스를 생성하고 메서드를 호출하여 데이터베이스 작업을 수행할 수 있음

 

myJdbcDao 필드 :
MyJdbcDao 객체를 저장하기 위한 필드입니다. 이 필드를 통해 데이터베이스 작업을 수행합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.gdu.app02.xml02;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MyJdbcService {
 
  private MyJdbcDao myJdbcDao;
  
  public void add() {
    myJdbcDao.add();
  }
  public void remove() {
    myJdbcDao.remove();
  }
  public void modify() {
    myJdbcDao.modify();
  }
  public void select() {
    myJdbcDao.select();
  }
}
 
cs

 

 

 

  MyJdbcConnection

JDBC(Java Database Connectivity)를 사용하여 데이터베이스 연결을 담당하는 역할을 합니다.

주요 기능은 데이터베이스 연결을 설정하고 Connection 객체를 반환하는 것입니다.

 

DriverManager.getConnection() 메서드를 사용하여 데이터베이스에 연결을 시도합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.gdu.app02.xml02;
 
import java.sql.Connection;
import java.sql.DriverManager;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
 
@NoArgsConstructor
@AllArgsConstructor
@Data
public class MyJdbcConnection {
 
  private String driver;    // oracle.jdbc.OracleDriver
  private String url;       // jdbc:oracle:thin:@127.0.0.1:1521:xe
  private String user;      // GD
  private String password;  // 1111
  
  public Connection getConnection() {
    
    Connection con = null;
    
    try {
      Class.forName(driver);
      con = DriverManager.getConnection(url, user, password);
      System.out.println(user + "접속성공");
    } catch (Exception e) {
      e.printStackTrace();
    }
    return con;
  }
}
 
cs

 

 

 

appCtx.xml

스프링(Spring) 애플리케이션 컨텍스트에서 사용되며, 여기에서 스프링 빈(Bean)을 정의하고 설정

빈들은 스프링 컨테이너에 의해 생성 및 관리

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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">
 
  <!-- MyJdbcConnection 객체 만들기 -->
  <bean class="com.gdu.app02.xml02.MyJdbcConnection" id="myJdbcConnection">
    <property name="driver" value="oracle.jdbc.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
    <property name="user" value="GD"/>
    <property name="password" value="1111"/>
  </bean>
  
  <!-- MyJdbcDao 객체 만들기 -->
  <bean class="com.gdu.app02.xml02.MyJdbcDao" id="dao"/>
  
  <!-- MyJdbcService 객체 만들기 -->
  <bean class="com.gdu.app02.xml02.MyJdbcService" id="service">
    <property name="myJdbcDao" ref="dao"/>
  </bean>
</beans>
 
cs

 

 

 

  Main

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.gdu.app02.xml02;
 
import org.springframework.context.support.AbstractApplicationContext;
 
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class MainWrapper {
 
  public static void main(String[] args) {
    AbstractApplicationContext ctx = new GenericXmlApplicationContext("xml02/appCtx.xml");
    MyJdbcService myJdbcService = ctx.getBean("service", MyJdbcService.class);
    myJdbcService.add();
    myJdbcService.modify();
    myJdbcService.remove();
    myJdbcService.select();
    
    ctx.close();
  }
}
 
cs

 

 

console창