Spring | <bean>태그로 객체 생성 활용하여 간단한 JDBC 구현

brightbell·2023년 9월 26일

Spring

목록 보기
3/12

구현한 순서
MyJdbcConnection 클래스
<bean>태그로 MyJdbcConnection 객체 생성
MyJdbcDao 클래스
<bean>태그로 MyJdbcDao 객체 생성
MyJdbcService 클래스
<bean>태그로 MyJdbcService 객체 생성
결과확인

MyJdbcConnection 클래스

@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;      // db계정
  private String password;  // db비밀번호
  
  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;
  }
  
}

<bean>태그로 객체 생성

<?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">
    <constructor-arg value="oracle.jdbc.OracleDriver"/>
    <constructor-arg value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
    <constructor-arg value="db계정"/>
    <constructor-arg value="db비밀번호"/>
  </bean>

  <!-- MyJdbcDao 객체 만들기 -->
  <bean class="com.gdu.app02.xml02.MyJdbcDao" id="myJdbcDao"/>
  
  <!-- MyJdbcService 객체 만들기 -->
  <bean class="com.gdu.app02.xml02.MyJdbcService" id="myJdbcService">
    <property name="myJdbcDao" ref="myJdbcDao"/>
  </bean>

</beans>

MyJdbcDao 클래스

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

MyJdbcService 클래스

@NoArgsConstructor
@AllArgsConstructor
@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();
  }
}

결과 확인

public class MainWrapper {
  
  public static void main(String[] args) {
  
    AbstractApplicationContext ctx = new GenericXmlApplicationContext("xml02/appCtx.xml");
    MyJdbcService myJdbcService = ctx.getBean("myJdbcService", MyJdbcService.class);
    myJdbcService.add();
    myJdbcService.remove();
    myJdbcService.modify();
    myJdbcService.select();
    ctx.close();
    
  }
}

0개의 댓글