스프링과 DB연결하기
springjdbc - dept패키지
1. WEB-INF에 lib폴더를 작성하고 ojdbc6.jar파일 추가하기
2. db연동 라이브러리를 pom.xml파일에 등록
=> spring - jdbc
oracle(maven중앙저장소에서 11버전까지는 지원이 안 되므로 외부저장소에 등록하고 작업)
3. 설정파일에 스프링에서 지원하는 API를 등록
- DB와의 연결을 관리하는 클래스를 등록(org.springframework.jdbc.datasource.DriverManagerDataSource)
jdbc에서 DriverManager로 커넥션을 생성하는 작업과 동일함(커넥션풀로 바꾸기)
DBUtil에 지원하던 기능을 지원
- jdbc에서 처리하던 공통의 작업을 수행하는 클래스
JdbcTemplate을 이용해 db연결하기
JdbcTemplate
: jdbc에서 공통으로 작업했던 부분을 처리하는 클래스로 드라이버로딩, DB연결, SQL문 실행기능이 제공되는 객체생성, sql값 전달 값 설정하여 SQL문을 완성시키는 역할을 한다.
dept.xml
1. 커넥션을 관리하는 객체를 등록하기
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
<property name="username" value="scott"/>
<property name="password" value="tiger1234"/>
</bean>
2. sql을 실행할 수 있도록 기능을 제공하는 클래스 등록하기
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="ds"/>
</bean>
3. @Component를 사용해 빈을 등록한 클래스의 빈을 생성해주기
<context:component-scan base-package="dept"/>
실제로 적용해보기
insert, update, delete
DeptSystem(main), DeptDTO, MenuUI(인터페이스 AbstractUI 상속), DeptDAOImpl(인터페이스 DeptDAO상속)
1) 객체 사용을 위해 bean등록하고 생성자만들어서 자동주입 시켜주기
@Component("ui")
public class MenuUI implements AbstractUI{
DeptDAO dao;
@Autowired
public MenuUI(DeptDAO dao) {
super();
this.dao = dao;
}
@Component
public class DeptDAOImpl implements DeptDAO{
private JdbcTemplate mytemplate;
@Autowired
public DeptDAOImpl(JdbcTemplate mytemplate) {
super();
this.mytemplate = mytemplate;
}
2) sql문 작성하고 값 전달하기
insert, update, delete 중 update만 해볼 것임. 패턴은 동일함
public class DeptDAOImpl implements DeptDAO{
//멤버변수, 생성자는 위와 동일하므로 생략
public int update(DeptDTO dept) {
String sql = "update mydept set loc=?, tel=?, mgr=? where deptno=?";
int result = mytemplate.update(sql, dept.getLoc(), dept.getTel(), dept.getMgr(), dept.getDeptNo());
return result;
}
}
=> insert, update, delete는 JdbcTemplate의 update(...)메소드를 이용하여 처리한다.
3) MenuUI에서 리턴값받아 처리하기
@Override
public void updateMenu() {
//멤버변수, 생성자는 위와 동일하므로 생략
System.out.println("*******부서정보수정(부서번호)********");
System.out.print("수정할 주소:");
String loc = key.next();
System.out.print("수정할 전화번호:");
String tel = key.next();
System.out.print("수정할 매니저번호:");
String mgr = key.next();
System.out.print("어떤 부서의 정보를 수정? ");
String deptno = key.next();
DeptDTO dto = new DeptDTO(deptno, loc, tel, mgr);
int result = dao.update(dto);
System.out.println("스프링에서 디비연동하기 update:" + result + "개 수정성공");
}
4) 실행결과
**********부서관리 시스템************
1. 부서등록
2. 부서상세보기
3. 부서정보수정(부서번호)
4. 부서삭제
5. 전체 부서 목록보기
6. 부서검색(부서명)
7. 부서갯수조회
8. 각 부서별 근무직원 조회하기(부서명)
9. 종료
원하는 작업을 선택하세요:3
*******부서정보수정(부서번호)********
수정할 주소:제주도
수정할 전화번호:999999999
수정할 매니저번호:9999
어떤 부서의 정보를 수정? 5555
스프링에서 디비연동하기 update:1개 수정성공
** 작성할 때 주의할 점
순서정해서 체계적으로 작성하기!!!
㉮ DI적용하기(상위 interface만들고 상속받는 객체에서 구현)
㉯ xml파일 작성하기
㉰ bean등록하기(@Component, @Autowired... 처리)
㉱ 생성자에 맞에 DTO객체 생성하여 메소드 호출하기(ex : MenuUI클래스)
㉲ JdbcTemplate클래스의 update()메소드 이용해 sql문 완성시키기(ex : MenuUI클래스)
㉳ 메인메소드에서 객체 생성하고 찾아와서 메소드 호출하기(ApplicationContext)
'Spring' 카테고리의 다른 글
2022-11-29 스프링 MVC프로젝트 생성하기 정리 (0) | 2022.11.29 |
---|---|
2022-11-29 스프링 jdbc(DB연결) - CRUD (0) | 2022.11.29 |
2022-11-25 IoC(제어의 역전), DI(의존관계 주입) - annotation을 이용해 객체 생성하기 리뷰 (0) | 2022.11.26 |
2022-11-25 IoC(제어의 역전), DI(의존관계 주입) - setter메소드를 이용해 객체 생성하기 리뷰 (0) | 2022.11.26 |
2022-11-25 IoC(제어의 역전), DI(의존관계 주입) - 생성자를 이용해 객체 생성하기 리뷰 (0) | 2022.11.25 |
댓글