Programing/Java

Java Jdbc를 이용한 데이터베이스 접근하기

BUST 2018. 10. 23. 20:49

Java Jdbc를 이용한 데이터베이스 접근하기

  • Hive를 사용할때 결과값이 몇천건만인 경우에는 메모리가 부족해서 GC 에러가 발생이 될수가 있다.
  • 여러번을 쪼개서 가지기 오기에는 Hive 특성상 일정한 시간 (Map, Reduce로 전체 데이터를 로딩을 처리하는 과정)이 걸리기 때문에 속도가 느리다
  • 쿼리를 1번만에 처리를 하고 메모리가 부족하지 않게 하는 방법은 JDBC의 ResultSet를 활용을 하면 된다.
  • Low Level 접근 방식중 하나인 ResultSet 디비로 부터 fetchSize만큼 데이터를 가지고 온다.
  • 데이터의 결과가 큰 경우에는 ResultSet을 이용하여 Chunk 단위로 파일을 생성하는 방법으로 할수가 있다.

1. Connection 생성하기

# DriverManager를 통해 Conneciton 가지고 오기

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn = null;

conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA92", "scott", "tiger");

# Datasource를 통해 Connection을 가지고 오기

Datasource datasource = …;

Connection conn = datasource.getConnection()


2. 쿼리 준비

PreparedStatement psmt = null;

psmt = conn.prepareStatement("DB쿼리문");

혹은 

Statement stmt = null;

stmt = conn.createStatement("DB쿼리문");


4. 쿼리 실행

# 데이터를 받아오지 않는 쿼리 (insert, update, delete)

psmt.executeUpdate();

# 데이터를 가지고 오는 쿼리

ResultSet rs = null;

rs = psmt.executeQuery();


5. 데이터 가지고 오기

while(rs.next()) { 

  int i=1;

  String id = rs.getString(i++);

  String name = rs.getString(i++);

  String addr = rs.getString(i++);

}


'Programing > Java' 카테고리의 다른 글

Queue 자료 구조  (0) 2018.11.12
Jackson ObjectMapper  (0) 2018.10.25
Guava Eventbus @AllowConcurrentEvents  (0) 2018.10.10
CompletableFuture  (0) 2018.09.15
Guava Cache  (0) 2018.09.12