Java
-
Checked Exception은 커밋? Unchecked Excpetion은 롤백? 스프링에서 @Transactional 으로 rollBack 다뤄보기Java 2023. 10. 23. 04:09
https://www.youtube.com/watch?v=_WkMhytqoCc 백기선님 유튜브 최근 트랜잭션에 대해 공부중이었는데 알고리즘이 나를 해당 영상으로 이끌었다. 간략하게 설명을 하면 - 컴파일 타임에 꼭 처리해야하는 checked Exception은 커밋으로 처리하기 - 런타임에 처리해야하는 unchecked Exception은 롤백 처리하기 이 두가지는 스프링 프레임워크에서 트랜잭션 실행시 작동하는 기본 전략이다. (외에 여러 옵션이 있다.) 그런데 자바의 Checked Exception 은 커밋으로 처리해야하고, Unchecked Exception은 롤백해야한다. 라고 잘못 퍼져나가는것에 대한 비판이 담긴 영상이다. 나도 사실 spring에서 transaction을 @Transactiona..
-
람다3편) stream + Optional 기능(feat. orElse VS orElseGet)Java 2023. 9. 22. 13:36
Optional의 문법적 개념과 어떤 상황에 써야하는지 배웠지만 잘 감이 오지 않았다. 그러다가 stream에서 자주 사용되는것을 보고 감을 잡기 시작했다. stream을 사용할때 반환값으로 Optional을 갖는 메서드들이 있다. findAny(), findFirst()... 우선 Optional에대해 공부하자. - Optional 객체를 생성하는 static함수 3가지 - empty() Optional은 Wrapper 클래스이기 때문에 값이 없을 수도 있는데, 이때는 Optional.empty()로 생성할 수 있다. public static Optional empty() { @SuppressWarnings("unchecked") Optional t = (Optional) EMPTY; return t;..
-
람다 2편)람다의 활용, stream APIJava 2023. 9. 22. 11:10
지난글에서 함수형 인터페이스들을 통해 람다식이 실행될 수 있음을 알아보았다. 이번 글에서는 람다식을 많이 활용하는 stream 기능에 대해 알아보려한다. list.stream().forEach((k)->{ //forEach는 매개변수만 있으면 됨. System.out.println(5); }); 간단한 stream 예시문이다. stream은 for문 매우 흡사하다. 각각 하나의 요소들을 탐색하고, 요소들에 어떤 작업을 한다. 그럼 왜 for문이 기존에 있는데 굳이 stream을 쓰는지? 답은 람다식을 쓰는 이유와 같이 가독성에 있다. 리스트에 1234 요소가 있다면 Exception을 터트리는 예제다. for문과 if문을 사용한다면 위처럼 나뉘어져서 for문과 if문이 서로 어떤 연관이 있는지 쉽게 알아..
-
람다 1편) 람다의 시작 , 함수형 인터페이스 (@FunctionalInterface)Java 2023. 9. 14. 17:34
자바 8에는 새로운 기능들이 많이 추가되었는데, 그중 많이 쓰이는 람다에 대해 정리해보려한다. 본인도 람다에 대해 이해중인 과정이기에, 최대한 쉽게 풀어쓰는데 중점을 두려한다. 람다식을 '왜 쓰는지' 에 대해 먼저 살펴보자. 1. 먼저 람다를 쓰지 않는 경우 interface A { void method1(String k ); } class TestApplication { public static void main(String[] args) { A a = new A(){ @Override public void method1(String k) { System.out.println(k); } }; a.method1("test1"); } } A클래스를 오버라이딩하는 B클래스를 생성했다. 그렇다면 람다(람다 함..
-
Call by Value / Call by Reference (feat. primitive )Java 2023. 9. 13. 17:04
C/C++에는 주소값을 활용한 포인터 방식으로 대상을 찾아간다. 자바 또한 참조값(메모리 주소값)을 통해 찾아가는 방식이다. 두 방식은 거의 같아보이는데, 주요 차이점은 포인터는 메모리 주소를 임의로 변경할수 있고, 주소값을 직접 제어해서 변수간 이동하는 방식이다. 반면 자바는 jvm이 메모리를 관리해주기 때문에 메모리 주소 임의 변경이 불가능하고 메모리 주소를 맘대로 제어할 수 없다. JVM의 영역별 역할을 아는것이 call by ~를 이해하는 데 도움이 될것이다. Call by Value Primitive type 에는 가장 기본적인 int , long , char , boolean , byte, float, double 이 있다. 참조 주소값 없이, 실제 데이터만을 저장한다. 해당 변수들은 모두 j..