[개념]_Spring JDBC , Mapper 활용 데이터 처리

728x90

Spring JDBC

-Spring FrameworkJDBC 프로그래밍을 위해 JdbcTemplate 클래스 제공함

-JdbcTemplate 클래스는 SQL 쿼리문 구현 쉽게 돕는다


[Spring JDBC 사용 절차]

프로젝트 새성 및 관련 모듈 추가

DB 테이블 생성 (데이터 구조)

           - 사용할 계정 생성 후 DB 테이블을 데이터 구조에 맞게 생성한다.

자바 설정 파일에 ‘DataSource 객체빈 등록 후 (DB 연결 정보 세팅)

//DataSource 객체 : DB 접속 정보 갖는 객체임
@Bean
public BasicDataSource source() {
	BasicDataSource source = new BasicDataSource();
	source.setDriverClassName("oracle.jdbc.OracleDriver");		                                 source.setUrl("jdbc:oracle:thin:@localhost:53056:orcl"); 
	source.setUsername("scott");
	source.setPassword("1234");
	return source;
}

‘JdbcTemplate 객체빈 등록 시, DataSource 객체 이용 -> DB 연결함

//데이터베이스에 접속해서 쿼리 전달하는 빈 등록
@Bean
public JdbcTemplate db(BasicDataSource source) { //DataSource 객체를 여기서 등록 -> DB와 연결
	JdbcTemplate db = new JdbcTemplate(source);
	return db;
		
}

 

데이터 객체 + DB 관리용 DAO 객체 생성

- 데이터 객체 : DB 테이블 구조에 맞게 내부 필드 갖는 데이터 객체생성 (@Component)

@Component
@Scope("protytype")
public class JdbcBean { //DB의 데이터 구조에 맞는 데이터 객체
	//필드
	private int int_data;
	private String str_data;
	
	//get/set()
	public int getInt_data() {
		return int_data;
	}
	public void setInt_data(int int_data) {
		this.int_data = int_data;
	}
	public String getStr_data() {
		return str_data;
	}
	public void setStr_data(String str_data) {
		this.str_data = str_data;
	}
	
}

- DAO 객체 : 내부에 필드로 JdbcTemplate 갖고 주입받는다. DB 쿼리문 전달용 객체임

                 : 여기서 데이터 처리 관련 메소드 생성하여 전체적인 데이터 처리 주관.

@Component
public class JdbcDAO { //DB 관리용 객체
	//필드
	@Autowired
	private JdbcTemplate db;//JDBC 관리 객체 주입받기 : DB 쿼리문 전달용 객체
	
	//데이터 가져오기

          //데이터 저장

          //데이터 변환 

          //데이터 삭제 

	}
}

main()에서 DAO 객체 getBean() 해서 데이터 관리하면 됨 (DB에도 동시 세팅이 됨)


데이터 처리 세부내용

[insert 처리 : DB에 값 저장]

        DAO 클래스 안에 Isert 메소드 작성

//저장- DB에 데이터 주입 메소드

public void insert_data(JdbcBean bean) { //주입할 데이터 객체 넣기
	String sql = "insert into jdbc_table (int_data, str_data) values(?,?)"; //sql 쿼리문 작성
	db.update(sql, bean.getInt_data(), bean.getStr_data()); //db 에 쿼리문 내용대로 데이터 주입	
}

        main()에서 getBean() 하여 insert 실행

//[DB insert]

//DB에 주입할 데이터 객체 세팅-(1) 
 JdbcBean bean1 = new JdbcBean(); //주입할 객체
bean1.setInt_data(1); 
bean1.setStr_data("문자열1"); 

//DB에 주입
dao.insert_data(bean1);
		 
 //DB에 주입할 데이터 객체 세팅-(2) 
 JdbcBean bean2 = new JdbcBean();
 bean2.setInt_data(2); bean2.setStr_data("문자열2"); 

//DB에 주입
dao.insert_data(bean2);
		  
System.out.println("저장완료");

[delete 처리 : DB 속 일부 데이터 삭제 ]

        DAO 클래스 안에서 delete() 메소드 작성

//데이터 삭제
public void delete_data(int int_data) {
	String sql = "delete from jdbc_table where int_data = ?";
	db.update(sql, int_data);
}

        main()에서 delete 실행

//[DB delete]

dao.delete_data(1);

[update 처리 : DB 속 일부 데이터 수정 ]

        DAO 클래스 안에서 update() 메소드 작성

//데이터 수정
public void update_data(JdbcBean bean) {
	String sql = "update jdbc_table set str_data = ? where int_data = ?";
	db.update(sql, bean.getStr_data(), bean.getInt_data());
}

        main()에서 update 실행

//[DB update]

JdbcBean bean4 = new JdbcBean();
bean4.setInt_data(1); 
bean4.setStr_data("문자열3");
		
dao.update_data(bean4);

[select 처리 : DB 속 값을 코드로 가져오기 ]

        Mapper 클래스 생성. implements RowMapper<데이터객체타입>

-Select문으로 데이터 가져올 때, 어떤 컬럼의 값을 bean 어디에 주입할지 결정해주는 역할
-이 클래스는 반드시, implements RowMapper<데이터객체타입> 구현 필수
-여기서 mapRow() 메소드 재정의해주어야 함

        DAO 클래스 안에서 Mapper 타입 필드 선언 후, select() 가져오기

//가져오기- DB 속의 데이터를 가져오는 메소드

public List<JdbcBean> select_data() {
	String sql = "select int_data, str_data from jdbc_table";
	List<JdbcBean> list = db.query(sql, mapper);
               
         //쿼리문과 mapper클래스 담아서 쿼리시도하면 List 타입으로 데이터들 가져옴
	return list; 
}

        main()에서 select 실행

//[DB select]- DB 속 데이터 가져오기 

List<JdbcBean> list = dao.select_data();
		
for(JdbcBean bean3 : list) {

	System.out.printf("int_data : %d\n", bean3.getInt_data());
	System.out.printf("str_data : %s\n", bean3.getStr_data());
	System.out.println("----------------------------------------");
}

728x90