본문 바로가기

Java4

[Java] Preparestatement AddBatch를 사용하여 대용량 데이터 INSERT 처리 연구과제 중 160억건에 달하는 데이터를 기간내에 INSERT 해야하는 이슈가 있었다. 매번 PrepareStatement 를 열고 닫고 하는 시간에서 속도가 떨어지는 것을 확인하게 되었다. 어떻게 하면 Insert를 더 빠르게 할 수 있을까? 생각하다가 Preparestatement에 addbatch() 클래스를 이용하기로 결정했다. 동작방법은 쿼리를 즉시 실행하지 않고 메모리에 쿼리문을 올려 놓고 실행 명령을 기다리다가 명령이 떨어지면 DB에 한번에 쿼리를 날리게 되는 것이다. 아래는 사용예제 코드를 올려 놓았다. 많은 데이터를 빠르게 INSERT하고 싶을 경우 이 방법을 사용해보면 좋다. 실제 사용했을 당시 삼중 반복문안에 INSERT 로직이 담겨져 있었다. Connection 객체설정 부분에 추가.. 2020. 8. 3.
Java Static은 언제, 어떻게 사용해야 할까 static 은 언제, 어떻게 사용해야 할까? 각 인스턴스들은 독립적이고 서로 다른 값을 가지고 있다. 경우에 따라서 각 인스턴스들이 공통적으로 같은 값을 가지고 있어야 하는 경우 Static을 사용한다. Static이 붙은 변수 및 클래스는 프로그램 실행 시 메모리에 자동으로 생성되기 때문에 인스턴스를 생성하지 않아도 사용할 수 있다. 메소드 내 인스턴스 변수가 필요하지 않다면 static을 붙이는 것이 메소드 호출 시간을 줄일 수 있다. 게임을 하는 중 현재 내 캐릭터의 전체 체력과 현재 체력이 있다고 가정하자 전체체력에는 static을 사용해야하고 현재 체력에는 static을 사용하면 안되는 것으로 이해하면 쉽다. static은 공통적이라는 의미를 갖는다고 생각하면 된다. 공통적으로 관리해야하는 값.. 2020. 7. 29.
String 과 String Buffer 차이점을 알아보자 String Class String 클래스는 변경이 불가하다 (Immutable Class) concat(), trim(), substring() 등 메소드들은 새롭게 생성된 String 객체를 반환한다. 기존 String 객체가 가지고 있는 데이터는 변경되지 않고 사용 가능한 상태로 남는다. String.substring() 이런 변경이 일어나면, 기존 String 객체와 String.substring() 객체 두개가 존재하게 되는 것이다. StringBuffer Class StringBuffer 클래스는 변경이 가능하다 (Mutable Class) append(), insert(), delete() 등의 메소드를 통해 StringBuffer객체가 가지고 있는 문자열을 변경할 수 있다. 이때에는 Str.. 2020. 7. 29.
[Java] Ajax 파일업로드(엑셀) 및 Poi 라이브러리 사용하기 Ajax 비동기통신을 사용해 엑셀파일업로드 후 Controller에서 엑셀데이터를 파싱해보자 업로드가 필요한 페이지 html파일에 아래와 같이 Form과 Input[type=file]을 만들어 줍니다. 페이지.html 데이터 업로드 엑셀파일만 업로드 가능(xls, xlsx) 이제 자바스크립트로 Ajax 코드블럭을 아래와 같이 생성해줍니다. 프로젝트 Maven pom.xml 에 아래와 같이 poi 라이브러리 및 파일 업로드 처리를 위한 라이브러리를 추가해줍니다. org.apache.poi poi-ooxml 3.17 commons-fileupload commons-fileupload 1.3.2 이제 컨트롤러로 넘어옵시다. 아래 소스는 파일업로드 처리 -> 업로드 한 파일을 Poi 라이브러리로 파싱합니다. @.. 2019. 11. 26.