스프링(3.0) Java에서 DB사용
1. DB사용 방법
① myBatis 사용
- 주로 사용
- Spring ORM : 대표적인게 iBatis
② 스프링자체 DB 사용
- Spring DAO
2. 새 프로젝트 설정
create table custom
(id number,
name char(10),
age number);
4. 메이븐
maven(메이븐) ① maven(메이븐)설치 ○ 메이븐을 날코딩으로 설치하는 경우는 드물다
② 구조 ○ 특정 저장소를 만들고 라이브러리를 저장소에서 다운로드 받기만 하면 된다 - 자신이 직접 라이브러리를 구할 필요가 없다 - 원래는 라이브러리파일을 프로젝트에 추가했다 ○ 라이브러리를 받아오는 문법을 통해 다운받는다 ○ 저장소는 메이븐, 구글,???에서 제공한다 ③ 메이븐 저장소 ○ jdbc라이브러리가 기본으로 필요하다 - Commons DBCP : 제일 많이 사용하는 DBCP - Maven, Gradle, Grape를 가장 많이 사용한다 ④ pool - Commons Pool ⑤ pom.xml - 메이븐 설정 파일 - 다음 설정 추가
- 작성위치 ⑥ 메이븐 repository ○ C:\Users\itwill\.m2\repository ○ 다음 풀더 생성 확인 - commons-dbcp - commons-pool |
5. DTO 작성
○ 위치 : src/main/java > com.exe.springjdbctemplate
○ 파일 이름 : CustomDTO
package com.exe.springjdbctemplate; public class CustomDTO {
private int id; private String name; private int age; //getter & setter } |
6. app-context.xml 복사
○ 원래 위치 : src/main/resources > META-INF > spring
○ 복사 위치 : src/main/java
① context생성
- 사용자 정의 문법을 작성하기 위해 다음 작성 : xmlns:p="http://www.springframework.org/schema/p"
- 짝으로 사용하므로 다음 추가 : http://www.springframework.org/schema/p
- 작성 위치
② 스프링에게 DB의 위치 정보를 알려주는 코딩 작성
- DB를 연결하는 객체
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@자신의 ip주소(localhost):DB이름(XE)" p:username="사용자r" p:password="비밀번호"/> |
③ 의존성 주입
- 일반적으로 메소드로 초기화작업을 많이 해준다 : property
<bean id="custonDAO" class="com.exe.springjdbctemplate.CustomDAO"> <property name="dataSource" ref="dataSource"/> </bean> |
④ CustomDAO.java에 다음 추가
private DataSource dataSource;
public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } |
7. CustomDAO 작성
○ JDBC로 작성
○ 데이터 입력
//dataSource값을 여기다가 넣어줘야 해서 작성 Connection conn = null;
public int insertData(CustomDTO dto) {
int result = 0; PreparedStatement pstmt = null; String sql;
try {
conn = dataSource.getConnection();
sql = "insert into cusotm (id,name,age) values (?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, dto.getId()); pstmt.setString(2, dto.getName()); pstmt.setInt(3, dto.getAge());
result = pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); }
return result;
} |
○ 다른 sql작업도 작성
- public List<CustomDTO> getList() : 모든 데이터 출력
- public CustomDTO getReadData(int id) : 하나의 데이터 출력
- public int updateData(CustomDTO dto) : 데이터 수정
- public int deleteData(int id) : 데이터 삭제
8. CustomMain.java 작성
○ 기본
package com.exe.springjdbctemplate; import java.util.List; import org.springframework.context.support.GenericXmlApplicationContext; public class CustomMain { public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("app-context.xml");
CustomDAO dao = (CustomDAO)context.getBean("customDAO"); CustomDTO dto; dto = new CustomDTO(); } } |
○ 각각 추가
- 데이터 추가
- 데이터 수정
- 하나의 데이터 검색
- 모든 데이터 출력
- 데이터 삭제
9. 에러가 나는 경우
① main에러
○ app-context.xml에서 다음 삭제
- http://www.springframework.org/schema/p
② 라이브러리 에러
○ ojdbc6추가
- pom.xml에 다음 추가
<!--ojdbc6 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>12.1.0.1-atlassian-hosted</version> <scope>test</scope> </dependency> |
- repository 추가
- pom.xml에 추가
dependencies 밑에 추가
<repositories> <repository> <id>oracle</id> <name>Oracle JDBC Repository</name> <url>https://packages.atlassian.com/maven-3rdparty/</url> </repository> </repositories> |
○ 생성 파일 확인
- 위치 : C:\Users\itwill\.m2\repository\com\oracle\ojdbc6\12.1.0.1-atlassian-hosted