JAVA
-
JDBC 의 Connection, Statement, ResultSet close 잘 하기JAVA 2020. 6. 22. 16:32
JDBC 의 Connection, Statement, ResultSet close 잘 하기 요즘은 프레임워크 기반으로 프로젝트를 구성해서 JDBC API 를 직접 쓰는 경우는 잘 없다. 그래도 레거시 시스템이나 직접 JDBC API 를 사용할 일이 있을 때를 대비하여 Connection, Statement, ResultSet 을 잘 닫는 방법을 정리한 글이다. 더불어 리소스 close 처리 개선을 위해 Java 7, 9 에서 등장한 try-with-resources 사용 방법을 알아보자. (Java 7 에서 try-with-resources 가 처음 등장했고, Java 9 에서 보다 향상되었다.) Table of Contents Connection, PreparedStatement, ResultSet 닫..
-
Java 입출력, BufferedReader, StringTokenizerJAVA 2020. 4. 8. 17:13
자바의 입력 Class Scanner, BufferedReader, StringTokenizer BufferedReader, StringTokenizer 는 문자열로 활용하기 위하여 사용. BufferedReader를 사용하는 것이 Scanner를 사용하는 것보다 빠르다. BufferedReader는 문자열에 최적화 되어 있음. Scanner를 사용했을시 입력 형태. //Scanner를 사용했을시 입력 형태. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // int long l = sc.nextLong(); // int String s = sc.next(); // String String s = sc.nextLine(); // String Bu..
-
JAVA 예외처리JAVA 2020. 4. 7. 09:15
예외처리란? 일단 예외란 프로그래밍 소스코드를 작성하여 컴파일과정에서는 문제를 발견하지 못하고 정상적으로 컴파일이 진행되었으나, 프로그램을 실행중에 발생하는 오류사항들을 대체로 예외라고 정의합니다. ex) 범위를 넘어선 배열접근, 정수를 0으로 나누는 경우, Null포인터 오류등이 있습니다. 그럼 이러한 오류가 발생하면 개발자는 어떻게 처리를 해주어야 하느냐? 처리하는 방법에는 여러가지가 있겠는데 어떤 에러가 발생할지 알고 있다면 Excepiton클래스명을 직접 명시해주거나 아니면 Excepiton을 통해 한꺼번에 처리해주는 방법이 있을 수 있습니다. try ~ catch문을 사용하는 방법부터 확인해보겠습니다. 기본적으로 try ~ catch문의 구조는 아래와 같아요. try { 예외가 생길 가능성이 있..
-
JAVA isFile(),isDirectory(),exists() 비교JAVA 2020. 3. 31. 10:48
오늘 포스팅에서는 'isFile(),isDirectory(),exists()를 비교'하는 포스팅을 작성하려고 합니다. 세가지 메소드는 파일/폴더가 있는지 확인하여 파일/폴더가 없어서 생기는 에러를 방지하기 위해 주로 사용됩니다. 1) 메소드 비교 경로.isFile() 경로가 file인지 확인한다. 경로.isDirectory() 경로가 directory(folder)인지 확인한다. 경로.exists() 경로에 file/directory(folder)가 존재하는지 확인한다. 2) 실제 결과 비교 ① 테스트할 디렉토리에 파일과 하위디렉토리를 넣어두었습니다. 아래의 [사진1]을 보시면 "C:\data\input\TestFile"에 파일 2개 (0000.txt,0001.txt)와 디렉토리(0002)가 있는것을 알..
-
JAVA 디자인 스트래티지 패턴JAVA 2020. 1. 2. 17:25
1. 정의 스트래티지 패턴(Strategy Pattern) 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할수 있다. 일반적으로 서브클래스를 만드는 방법을 대신하여 유연성을 극대화시키는 용도로 사용한다. 디자인원칙 중 변경이 필요한 부분의 분리, 상속보다는 구성을 활용하라는 원칙을 적용한 패턴 스트래티지 패턴은 정의와 같이 알리즘군을 정의하여 유연하게 알고리즘을 변경하는 용도로 사용되는 디자인 패턴입니다. 다음으로 제가 좋아하는 캐릭터인 아이언맨을 이용한 예시와 함께 스트래티지 패턴을 더 자세하게 알아보겠습니다. 2. 예시: 개요 아이언맨인 토니 스타크에게는 다양한 종류의 아이언맨 수트가 있습..
-
JAVA 은닉화 ( encapsulation ) : 캡슐화JAVA 2020. 1. 2. 15:42
- 캡슐화 개념 캡슐화는 일반적으로 변수와 클래스를 하나로 묶는 작업이다. 캡슐화의 중요 목적은 중요한 데이터를 보존,보호하기 위해 사용하는 것이다. 즉 캡슐화는 클래스에 담는 내용중 중요한 데이터나 기능을 외부에서 접근하지 못하게하기 위해 사용한다고 알아 두면 된다. 캡술화 = 은닉성 이라고 생각하면 쉽다. - 캡슐화 방법 1. 멤버 변수 앞에 접근 제어자 private를 붙인다. (private: 자기 클래스에서만 접근할 수 있는 것 ) 2. 멤버 변수에 값을 넣고 꺼내 올 수 있는 메소드를 만든다 (접두어 set/get을 사용해 메소드를 만든다.) 구체적으로 어떤 말일까? 자 학생이란 클래스와 학교라는 클래스를 만들었다고 가정해보자. 학생이라는 클래스에서 학생의 나이들은 private 가 붙어있다...
-
JAVA 디자인 팩토리 패턴JAVA 2019. 12. 30. 17:45
추상 팩토리 패턴 ( Abstract Factory Pattern ) 추상 팩토리 패턴이라는 이름만 봐서는 팩토리 메서드 패턴과 비슷해보이지만, 명확한 차이점이 있습니다. 팩토리 메서드 패턴 조건에 따른 객체 생성을 팩토리 클래스로 위임하여, 팩토르 클래스에서 객체를 생성하는 패턴 ( 링크 ) 추상 팩토리 패턴 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴 추상 팩토리 패턴은 어떻게 보면, 팩토리 메서드 패턴을 좀 더 캡슐화한 방식이라고 볼 수 있습니다. 예를 들어, 컴퓨터를 생산하는 공장이 있을 때, 마우스, 키보드, 모니터의 제조사로 Samsung과 LG가 있다고 가정하겠습니다. 컴퓨터를 생산할 때 ..