JDBC 1일차

0

JDBC란 무엇인가?

  • JDBC : Java DataBase Connectivity
  • Java에서 DB 프로그래밍을 하기 위해 사용되는 API
  • DB 종류에 상관없다.
  1. 드라이버 로드하기
  2. 연결 생성하기
  3. 문장 실행하기
  4. 결과집합 사용하기

JDBC를 이용하는 자바 코드

  1. Class.forName("oracle.jdbc.driver.OracleDriver")
  • 메모리상에 드라이버가 올라간다.
  1. Connection con = DriverManager.getConnection(...);
  • 연결이 실행되고 연결이되면 Connection 객체가 생성
  1. Statement st = con.createStatement();
  • 연결이 되어야만 실행객체가 생성되어야한다.
  1. ResultSet rs = st.executeQuery(sql);
  • 결과집합이 한꺼번에 넘어오는 것이 아닌 결과집합을 사용할 수 있는 상태가 된다.
  • Before of File(BoF) / End of File(EoF)
  1. rs.next();
  • 데이터 패치
  • 4번 과정에서 생긴 커서가 다음 레코드로 이동한다.
  1. String title = rs.getString("title");

간단한 실습

String url = "jdbc:oracle:thin:@localhost:1521/xepdb1";
String sql = "SELECT * FROM NOTICE";

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, "newlec", "****");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);

rs.next();

String name = rs.getString("TITLE");
System.out.printf("NAME:%s\n", name);

rs.close();
st.close();
con.close();

<주의사항>

  • 오타를 진~짜 조심하자...
  • 포트번호가 1521인데 1512로 해놓고 이틀동안 찾지 못하여 엄청 해맸다...

간단한 실습2

  • 특정 테이블에서 모든 row를 출력한다.
while(rs.next()) {
			int id=rs.getInt("ID");
			String title = rs.getString("TITLE");
			String writedId = rs.getString("WRITER_ID");
			String content = rs.getString("CONTENT");
			Date regDate = rs.getDate("REGATE");
			int hit = rs.getInt("HIT");
			
			System.out.printf("id: %d, title: %s, writerid: %s, regDate: %s, content: %s, "
					+ "hit: %d\n", id, title, writedId, regDate, content, hit);
		}

간단한 실습3

  • 특정 데이터에서 조건에 맞는 ROW만 출력
  • 나는 while문 내에서 조건문을 달았는데 이는 잘못된 것이였다.
    - 조건은 SQL문에서 WHERE절로 처리를 했어야했다. 이를 명심하자
  • 데이터 필터링, 정렬, 그룹화, 등의 모든 데이터 연산은 데이터베이스에서 처리한다.
  • 자바는 UI 레이아웃만 처리
  • 데이터 가공처리는 SQL이 처리

트랜잭션 처리

트랜잭션이란?

  • 하나의 단위로 수행되길 바라는 쿼리의 묶음(=업무 수행단위, 논리적인 수행단위)
  • 트랜잭션 처리란?
    • ACID를 유지하는 것
    • Automaticity(원자성), Consistency(일관성), Isolation(고립성), Durability(영속성)
      • 원자성 : 모든 트랜잭션이 성공 또는 실패
      • 일관성 : 트랜잭션이 완료되어도 DB의 고유 속성은 유지
      • 고립성 : 하나의 트랜잭션이 작동할 때 다른 트랜잭션이 개입을 할 수 없다.
      • 영속성 : DB에 영속적으로 저장되어야한다.
    1~8강

0개의 댓글