Java(23)
-
자바의 예외 계층 - 체크 예외와 언체크 예외
보호되어 있는 글입니다.
2024.02.26 -
Spring JDBC로 알아보는 예외 덩어리 처리 방법
[ 문제 상황 ] JDBC관련 강의를 공부하다가 JDBC로 쿼리를 작성할 때 매 줄마다 예외가 터지는 모습을 보았다. 이런 상황일 때 어떻게 처리해야 하는지를 기록해두고 싶었고 한번 상황을 봐보자. JDBC로 DB와 연결을 해서 데이터를 주고 받으려면 총 아래의 3단계의 과정을 순서대로 거쳐야 한다. 1. DB 커넥션 2. SQL 전달 3. 결과 응답 이 각각의 상황마다 SQLException이 터진다. 이걸 처리하려면 순서대로 객체를 획득하는 순서에 따라 예외를 잡게 하고 반대 순서대로 객체 예외를 처리해주어야 한다. 예를 들어 SQL 전달 객체까지 획득했다면 SQL 전달 객체 처리 -> DB 커넥션 객체 처리 순서대로 해주어야 한다. 이 과정을 한번 봐보자. [ 해결 과정 ] 우선 아래의 상황은 JD..
2024.02.22 -
자바의 람다와 스트림 - 1(TIL)
1. 람다와 스트림을 제공하게 된 이유? 자바 8은 간결한 코드와 멀티코어 프로세서의 쉬운 활용이라는 요구사항을 기반으로 만들어졌다. 간결한 코드를 제공하고 멀티코어 프로세서에 대한 대안으로 람다와 스트림이라는 것을 도입하였다. 간결한 코드는 람다를 통해서 이루어진다. 자바 8 이전에는 익명 클래스를 이용해서 동작의 파라미터화를 구현해왔다. 하지만 익명 클래스를 이용하는 경우 불필요한 중첩이 늘어나 가독성이 높지 않다. 예를 들어, 쓰레드를 Runnable로 만들었을 대 코드를 다음과 같이 작성할 수 있다. 확실히 익명 클래스를 사용할 때보다 가독성이 높아진 걸 확인할 수 있다. public void anonymousClass() { Runnable r = new Runnable() { ..
2024.01.20 -
static initializer block와 initializer block
[ 작성 이유 ] static 키워드와 관련된 공부를 하다가 static{} 이렇게 된 코드를 보게 되었고 이 코드가 무엇을 의미하는 건지 몰라 찾아보니 정적 초기화 블록이라는 걸 알게 되었다. 그래서 모르는 김에 초기화 블록에 대해서 정리를 해보고자 한다. [ 초기화 블록 ] 초기화 블록은 실행 시점에 따라 static initializer block(정적 초기화 블록), initializer block(인스턴스 초기화 블록) 이렇게 두 가지로 나뉜다. ○ 정적 초기화 블록 정적 초기화 블록이 실행되는 시점은 클래스가 로딩되는 시점에 실행된다. static이라는 키워드가 붙어있듯이 인스턴스와 관련된 변수를 설정하는 공간은 아니고 static 변수만을 초기화할 수 있다. 특징으로는 해당 클래스에서 딱 한..
2024.01.19 -
static 키워드
[ 작성 이유 ] 이전 포스팅에서 Java의 메모리와 관련돼 글을 작성했었다. 당시에 명확하게 각각의 메모리가 올라가는 영역과 시점에 관해서 공부를 했었고 내가 알기로는 static 메서드는 해당 클래스의 첫 객체가 생성되는 시점 혹은 내부 static메서드가 호출되는 시점에 static 영역에 올라가는 것으로 알고 있었다. 모던자바인액션을 공부하던 중 static이 마구 써있는 상황에서 이게 어떻게 쓰이는 지 이해가 안됐다. 메모리를 공부할 때에 정확하게 모르고 넘겼던 것 같다. 이 부분을 한 번 명확하게 다시 구분해보자. [ static 키워드의 사용 ] 우선, static을 쓰면 좋은 상황을 이해하기 위해서는 static영역과 heap영역에 관한 이해가 필요하다. static영역의 코드는 stati..
2024.01.17 -
자바의 캡슐화 - Private, Protected, Default, Public
[ 작성 이유 ] 자바에 관한 책들을 보면 자바의 객체지향적 특징으로 캡슐화, 상속, 추상화, 다형성을 언급하는 곳이 많았다. 그런데 책의 내용을 읽으면 나머지는 어느정도 이해가 됐지만 캡슐화는 접근자에 관한 이야기와 범위에 관한 내용 외에는 머리에 남는 내용이 없었다. 하지만 뭔지는 몰라도 'public 막쓰면 안돼요.', 'setter 쓰지 마세요.', 이런 말들은 강의를 듣거나 남의 코드 리뷰를 보면 많이 나오는 피드백이다. 이 이유들에 관해서 나름대로의 생각을 적어보려고 한다. 아직 디자인 패턴 및 클린코드에 대해서 배우지는 않았지만 Spring을 공부하면서 혹은 Java를 공부하면서 든 생각이니 착각하는게 있다면 바로 잡을 수 있게 도와주었으면 한다. [ 캡슐화 ] 캡슐화의 핵심은 관련이 있는 ..
2024.01.10