Download presentation
Presentation is loading. Please wait.
Published byTobias Hunter Modified over 8 years ago
1
ㅇ 데이터베이스 연동 지원 - 템플릿 클래스를 통한 데이터 접근 지원 - 의미있는 예외 클래스 제공 - 트랜잭션 처리 ㅇ Connection / PreparedStatement / ResultSet / try-catch 등 JDBC 중복 코드 제거 JDBC
2
ㅇ JNDI 를 이용한 DataSource - Tomcat 등 WAS 에서 제공하는 DataSource 이용 - 사용 예 1) <beans xmlns="http://www.springframework.org/schema/beans" xmlns:jee=“http://www.springframework.org/schema/jee" 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-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> JDBC – DataSource 설정
3
ㅇ JNDI 를 이용한 DataSource - 사용 예 2) <bean id=“dataSource” class=“org.springframework.jndi.JndiObjectFactoryBean”> JDBC – DataSource 설정
4
ㅇ DriverManager 를 이용한 DataSource - 커넥션 풀이나 JNDI 를 사용할 수 없는 경우 - 사용 예 ) <bean id=“dataSource” class=“org.springframework.jdbc.datasource.DriverManagerDataSource” p:driverClassName=“oracle.jdbc.driver.OracleDriver” p:url=“jdbc:oracle:thin:@localhost:1521:orcl” p:username=“scott” p:password=“tiger” /> JDBC – DataSource 설정
5
ㅇ Connection Pool 을 이용한 DataSource - DBCP(Jakarta Commons Database Connection Pool) API 이용 - 사용 예 ) <bean id=“dataSource” class=“org.apache.commons.dbcp.BasicDataSource” p:driverClassName=“oracle.jdbc.driver.OracleDriver” p:url=“jdbc:oracle:thin:@localhost:1521:orcl” p:username=“scott” p:password=“tiger” /> JDBC – DataSource 설정 ※ MySQL - driverClassName com.mysql.jdbc.Driver - url jdbc:mysql://localhost:3306/DB
6
ㅇ 필요 라이브러리 - spring-jdbc.jar - spring-tx.jar - commons-dbcp.jar - commons-pool.jar - ojdbc.jar JDBC – DataSource 설정
7
ㅇ JdbcTemplate - queryForList() - query() - queryForObject() - queryForMap() - update() JDBC – Template 사용 조회 삽입, 수정, 삭제
8
ㅇ JdbcTemplate 사용 예 ) @Autowired private JdbcTemplate jdbcTemplate; public void selectBoard() { String sql = "SELECT * FROM BOARD WHERE SEQ_NO = ?"; List > list = jdbcTemplate.queryForList(sql, “1”); for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i).get("SEQ_NO") + "" + list.get(i).get("TITLE")); } public void insertMember() { String sql = "INSERT INTO MEMBER VALUES (“ + “ ?, ?, ?, SYSDATE)"; jdbcTemplate.update(sql, “seorab”, “password”, “kim”); } JDBC – Template 사용
9
config.xml JDBC <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
10
Main.java (1 / 2) JDBC public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "edu/seowon/jdbc/config.xml"); BoardDao dao = (BoardDao) ctx.getBean("boardDao"); List > list = dao.getList(); for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i).get("SEQ_NO") + " // " + (String)list.get(i).get("TITLE")); } List list2 = dao.getList2(); for(int i = 0; i < list2.size(); i++) { System.out.println(list2.get(i).getSeqNo() + " // " + (String)list2.get(i).getTitle()); }
11
Main.java (2 / 2) JDBC BoardDto board = dao.get(); System.out.println(board.getSeqNo() + " // " + board.getTitle()); Map map = dao.get2(); System.out.println(map.get("seqNo") + " // " + map.get("title")); Map map2 = dao.get3(); System.out.println(map2.get("SEQ_NO") + " // " + map2.get("TITLE")); int count = dao.getTotalCount(); System.out.println(count); dao.insertMember(“id", “password", "성명 ", "0108478"); }
12
BoardDto.java JDBC public class BoardDto { private String seqNo; private String title; private String content; private String writeId; private String creDate; public String getSeqNo() { return seqNo; } public void setSeqNo(String seqNo) { this.seqNo = seqNo; } …. 생략 … }
13
BoardDao.java (1 / 6) JDBC public class BoardDao { @Autowired private JdbcTemplate jdbcTemplate; public List > getList() { String sql = "SELECT * FROM BOARD_M1 WHERE SEQ_NO = ?"; List > list = jdbcTemplate.queryForList(sql, "21"); return list; }
14
BoardDao.java (2 / 6) JDBC public List getList2() { String sql = "SELECT * FROM BOARD_M1 WHERE SEQ_NO = ?"; List list = jdbcTemplate.query(sql, new Object[]{"21"}, new RowMapper () { @Override public BoardDto mapRow(ResultSet rs, int rowNum) throws SQLException { BoardDto board = new BoardDto(); board.setSeqNo(rs.getString("SEQ_NO")); board.setTitle(rs.getString("TITLE")); board.setContent(rs.getString("CONTENT")); board.setWriteId(rs.getString("WRITE_ID")); board.setCreDate(rs.getString("CRE_DATE")); return board; } }); return list; }
15
BoardDao.java (3 / 6) JDBC public BoardDto get() { String sql = "SELECT * FROM BOARD_M1 WHERE SEQ_NO = ?"; BoardDto board = jdbcTemplate.queryForObject(sql, new Object[]{"21"}, new RowMapper () { @Override public BoardDto mapRow(ResultSet rs, int rowNum) throws SQLException { BoardDto board = new BoardDto(); board.setSeqNo(rs.getString("SEQ_NO")); board.setTitle(rs.getString("TITLE")); board.setContent(rs.getString("CONTENT")); board.setWriteId(rs.getString("WRITE_ID")); board.setCreDate(rs.getString("CRE_DATE")); return board; } }); return board; }
16
BoardDao.java (4 / 6) JDBC public Map get2() { String sql = "SELECT * FROM BOARD_M1 WHERE SEQ_NO = ?"; Map map = jdbcTemplate.queryForObject(sql, new Object[]{"21"}, new RowMapper >() { @Override public Map mapRow(ResultSet rs, int rowNum) throws SQLException { Map map = new HashMap (); map.put("seqNo", rs.getString("SEQ_NO")); map.put("title", rs.getString("TITLE")); return map; } }); return map; }
17
BoardDao.java (5 / 6) JDBC public Map get3() { String sql = "SELECT * FROM BOARD_M1 WHERE SEQ_NO = ?"; Map map = jdbcTemplate.queryForMap(sql, new Object[]{"21"}); return map; } public int getTotalCount() { String sql = "SELECT COUNT(*) FROM BOARD_M1 WHERE SEQ_NO = ?"; int count = jdbcTemplate.queryForObject(sql, new Object[]{"21"}, Integer.class); return count; }
18
BoardDao.java (6 / 6) JDBC public void insertMember(String id, String pw, String name, String phone) { String sql = "INSERT INTO MEMBER_M1 VALUES (?, ?, ?, ?, SYSDATE)"; jdbcTemplate.update(sql, id, pw, name, phone); }
19
JDBC 실습 ㅇ config.xml - dataSource 빈 설정 - jdbcTemplate 빈 설정 (JdbcTemplate) - ListController 빈 선언 - BoardDao 빈 선언 ㅇ Main.java public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "exam/spring/jdbc/config.xml"); Object obj = ctx.getBean("listController"); ((ListController)obj).process(); }
20
JDBC 실습 ㅇ ListController.java - @Autowired 를 사용하여 BoardDao 주입 - process() 메소드 정의 ㆍ boardDao 의 selectBoard() 실행 후 List 형태로 결과값 받음 ㆍ위에서 받아온 List 데이터 출력 ㅇ BoardDao.java - @Autowired 를 사용하여 JdbcTemplate 주입 - selectBoard() 메소드 정의 ㆍ queryForList() 메소드를 사용하여 BOARD_M1 테이블 조회
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.