자바 문법 +JDBC

2021. 1. 23. 23:19코딩테스트 준비

반응형

스택

자바에서는 스택이 내장되어 있는 클래스이기 때문에 위와 같이 자료형을 정하여 객체를 선언해주면 된다. 그리고

push,pop,isEmpty 등등의 메소드를 함께 활용하여 사용해준다

 

\

보통은 위와 같이 isEmpty 메소드를 함께 활용하여 에러처리를 포함하여 출력하도록 한다

출력 시 Iterator 내장 클래스를 활용하여 출력할 수도 있다. 이는 리스트 자료형을 출력할 때 보통 사용하며, 위 내용은 Iterator라는 클래스의 객체를 hasNext 메소드를 활용하여 값이 있으면 출력해주는 구문이다. 

next() 메소드를 활용하면 리스트의 바로 다음 값을 할당해준다.

 

Set 자료형

HashSet, TreeSet가 있다 (다른 Set은 자주 쓰이지 않아 생략)

 

HashSet: Set 인터페이스의 구현 클래스로

Set의 성질을 가지고 있어 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있습니다. 또한 저장 순서가 유지되지 않습니다

TreeSet: HashSet과 매우 유사하며, 다만 자동으로 정렬시켜준다는 장점이 있다.

.

 

Map 자료형

(key,value)로 이루어져 있다. 해시 알고리즘 기반으로 동작하기 때문에 키 값을 찾아내는 속도가 빠른 편이다

get 메소드를 통하여 key값을 안에 넣으면 해당 value값이 반환된다. 이를 switch 구문에서도 활용할 수 있다.

 

 

S

Stream.of의 안에 배열 객체를 안에 넣으면 안에 있는 내부 값들이 모두 출력되게 된다. 

 

역순 배열을 출력하고 싶다면 위와 같이 return 구문안에 -1을 곱해주면 된다. 그러면 정렬된 배열에서 가장 뒤에 있는 것부터 인덱스가 0일 때까지 출력되어 역순 배열을 출력할 수 있게된다.

 

예외처리

try~catch~finally 구문을 통하여 예외를 반드시 잡아주어야 한다

다양한 에러의 종류가 있지만, 에러를 잡아주지 않게 되면, 어디서, 어떠한 에러가 났는지 모르는 채 프로그램이 죽어버리는 경우가 다수 발생할 수 있다. 따라서 이를 사전에 고려한 코딩을 해주어야 한다.

 

try 구문에는 기존의 코드를 수행하고 catch 구문에서 에러의 종류를 지정할 수 있으며, 또한 지정된 에러가 발생했을 때 출력구문을 지정해줄 수도 있다. 또한 finally 에서는 자원반납에 관한 코드를 설계해주면 된다

 

throws 메소드를 통하여 호출한 곳으로 예외를 떠넘길 수도 있다

위와 같이 throw 키워드를 사용하여  예외가 발생하면 try~catch문으로 이동하여 처리하게 된다

 

 

이와 같이 new File을 통해 파일의 절대 혹은 상대 경로를 가지고 와서 해당 경로에 있는 파일의 내용을 활용할 수 있다

사용자 지정 클래스를 만들 때 다양한 자료형을 활용하고 싶다면 위와 같이 템플릿 키워드와 함께 사용하면 된다 이때 T는 임의의 자료형이 되며 다른 변수가 올 수도 있다.

 

이 때 클래스를 생성할 때 default로 클래스는 Object형를 상속받기 때문에 멀티 타입이 가능한 자료형을 생성할 때는 Object형이라고 표기해준다. 그리고 T 자료형으로 다운캐스팅을 거쳐야 한다

스택 자료형을 설계할 때 push 즉 스택에 데이터를 넣는 것을 구성하게 되면 배열의 사이즈가 1씩 증가하는 배열 리사이징이 필요하다 이를 구현할 때는 임의의 temp라는 배열을 만들고, 스택이 가득차게 되면, temp의 배열을 2배의 사이즈로 만들어주고, 이를 arraycopy를 통해 기존의 stack 길이만큼을 복사해주는 과정을 거친다

 

pop을 구현하게 되면 위와 같이 임시 배열을 하나 만들고, stakc의 맨 위에 있는 것을 먼저 리턴 시키기 위한 pop을 구성한 뒤 임시 배열에 기존의 값들에서 맨 위를 제외한 값까지를 넣고, 이것을 배열 복사하여 stack에 할당해주면 된다

 

JDBC

jdbc 프로그래밍 순서

 

0. 연결할 driver클래스를 classpath아래==>maven 설정으로 대체

 위와 같이 프로젝트 내에 (현재는 오라클 데이터베이스 관련한 드라이버 jar 파일을 넣어줌) 넣어준다. 현업에서는 maven으로 설정하게 되면 자동으로 driver 클래스를 구성해준다

 

 

 

 

 

 

 

 

 

 

 

 

driver, url, user, pw를 입력해주어야 한다. 연동할 데이터베이스의 드라이버를 입력해주어야 하며, url의 경우, 또한 해당 데이터베이스의 주소 값을 긁어와야 한다. user,pw의 경우도 데이터베이스 내부에서 등록해둔 유저의 아이디와 비밀번호값을 입력해준다.

다음으로는 Connection, Statement, ResultSet 객체를 선언해준다. 각각이 의미하는 바는

Connection의 경우 database와 자바가 연결되었는지를 확인하기 위한 객체이며, 

Statement 클래스: SQL 구문을 실행하는 역할로 스스로는 SQL구문을 이해하지 못하며, 단순히 전달하는 역할만 수행한다

PreparedStatement 클래스: Statement 객체의 기능을 향상한다. 인자와 관련된 작업이 특화되어 있으며 코드 안정성이 높다

ResultSet 클래스는 쿼리문의 결과를 담을 때 주로 사용한다

 

1. Driver클래스를 로딩

 

2. 로딩된 Driver클래스를 이용해서 Connection요청(url, user, pwd)

 

3. 생성된Connection으로부터 Statement생성

4. 생성된 Statement 이용해서 sql수행

(execute, executeUpdate, executeQuery)

statement 구문을 실행한 결과를 resultSet 객체에 담아준다

 

 

5. 결과 처리(ResultSet, int)

 이와 같이 next값이 있다면 계속해서 데이터를 출력해주는 구문과 같이 처리하여 원하는 결과값을 출력할 수 있도록 한다

 

6. SQLException 처리(try, catch, finally)

sql 구문 상 오류가 발생했을 때에 대한 예외처리 구문을 작성해준다

 

7. 자원정리(connection, statement, resultset)

마지막으로 할당받은 클래스들에 대한 자원을 정리해준다

 

DAO 클래스

DAO 클래스에서는 주로 데이터들을 핸들링하기 위한 클래스 함수들을 정의해준다. 주로 JDBC에서는 삽입,삭제,수정,조회 작업을 정의하게 되며, 데이터베이스 내에 있는 테이블들의 컬럼과 관련하여 조회하는 경우가 대부분이다 이 때 그 이전에 VO 클래스가 반드시 정의되어 있어야 한다. 또한 VO 클래스를 토대로 작성하는 것이 일반적이다

 

Service 클래스

App과 DB만으로 이루어진 2tier 설계는 보안상 매우 취약하다. 따라서 Service를 중간에 삽입하여 필터링 또는 핸들링 해주는 과정이 있어야한다. 따라서 Service 클래스를 사용하게 된다

dao 클래스 내에 정의된 함수들을 가지고 interface를 통해 어떻게 사용할지에 대한 설계 내용이 담긴 것이다

service 클래스에서는 interface를 설계하게 되며, 먼저 interface를 통해 서비스할 내용들에 대한 함수들을 선언해준다

 

즉 클라이언트에게 제공되는 서비스의 목록을 보여주고, 해당 목록에는 어떠한 기능이 있는지, 그리고 기능을 어떻게 사용하는지에 대한 설명들이 모두 기술되어 있는 곳이다

 

ex1)

 

데이터베이스 내에서 키워드 검색 시, % 연산을 수행하게 되면 keyword를 입력하였을 때 sql 구문이 만들어져, 검색이 가능해진다. 이를 구현하는 방법이 위와 같다

 

 

 

 

 

 

반응형