JAVA11

JVM/Java

[Java] 자바10부터 나온 var

😉서론 회사 내 모든 프로젝트가 자바8에서 자바11로 올리게 되었다. 그래서 현재 자바8 기준으로 되어 있는 소스코드들이 많았고, 자바 8 이후에 나온 기술들을 하나하나 도입을 준비 중에 있다. 이후 sonarQube(소나큐브) 라는 소스코드 품질을 높여주는 툴을 도입하게 되었고, 여기 이슈에서 var 관련 이슈가 엄청 많이 나왔다. 그래서 도입 전 var가 뭔지 어떻게 쓰면 좋은지에 대해 알아보고 결정해야 하기에 알아보게 되었다. 🤷‍♂️자바8 이전과 자바10 이후 차이점 // 자바8 이전 String message = "Good bye, Java 9"; Map map = new HashMap(); // 자바10 이후 var message = "Hello Java 10"; var idToNameMap ..

JVM/Java

[Java] Optional – orElse() vs orElseGet() 차이점 알고 쓰자.

* 2022.03.01 내용 수정 - orElse() 를 사용하는 경우 추가 - orElse() orElseGet() 작동원리 수정 😉서론 자바 8부터 지원하게 된 optional은 NullPointerException 에 대한 문제를 해결하기 위해 나왔습니다. 하지만 그런데도 null이 발생할 수 있고, null 체크를 해야만 하는 경우가 빈번합니다. 그러므로 null일 시 default 값을 넣어줄 수 있는데 그중에서 orElse()와 orElseGet() 이 존재합니다. 이를 그냥 이것저것 사용할 수도 있지만, 알고 쓰는 것과 모르고 쓰는 것은 천지 차이기 때문에 한 번 정리해보았습니다. 🤔둘의 차이? public T orElse(T other) public T orElseGet(Supplier

JVM/Java

[Java] Map getOrDefault 를 활용하자.

getOrDefault 를 모르기 전까지 방식 1. 일단 get으로 원하는 값을 가져오고, 2. 있는지 없는지 null 체크 하고, 3. null 이면 새로 만들어준다. getOrDefault를 안 이후 1. 가져오고, 없으면 새로 만들어준다. 분명 잘 쓰고 있다고 생각했지만, 내가 모르는 많은 라이브러리등이 존재한다.. 계속 알아갈 때 마다 재밌넹

JVM/Java

[Java] ArrayList 조건 삭제 'removeIf'

서론 arrayList 경우 내가 삭제하고 싶은 애를 삭제하고 싶은 경우 for문을 돌리고, if문을 통해 삭제하는 경우가 있었다. 하지만 자바8부터 생긴 removeIf를 사용하면 람다식을 이용하여 간단하게 삭제할 수 있다. 본론 자바8에 생긴 람다 중 Predicate 를 사용하여 list에서 원하는 애를 삭제하는 방식을 이용하고 있다. 이는 stream에 있는 filter랑 같은 원리이다. 리턴 값은 boolean으로 하나라도 삭제가 되면 true, 삭제가 없으면 false를 반환한다. 예제 위처럼 removeIf를 통해 조건에 맞는 데이터들을 한 번에 정리할 수 있다.

DataBase

[PostgreSQL] CLOB타입과 TEXT타입 - JPA

🤸‍♂️서론 예전에 @Lob 에러 관련 글을 적은 적이 있다. 당시에는 postgresql에서 @Lob을 아예 사용할 수 없는 줄 알고 @Column(columnDefinition="TEXT") 사용을 무조건 해야 한다고 알고 있었지만 최근에 틀렸단 것을 깨닫고 글을 작성한다. 🙋‍♂️LOB? CLOB? 그게 일단 뭐야! 간단하게 알려줘!! LOB - Large Objcts ------------ CLOB - Character LOBs : DB 내부에 존재하는 대용량의 텍스트 BLOB - Binary LOBs : Image, Sound, Video 등의 대용량의 DB내부에 존재하는 데이터 NCLOB - National Character LOBs : DB 내부에 존재하는 대용량의 내셔널 텍스트 BFILE ..

JVM/Spring

[SPRING] feign은 뭘까?

🤔 서론 다른 서버와 통신을 하기 위한 API 를 설계 및 개발을 하면서 알게 된 feign에 대해서 정리하기 위해 작성하게 되었다. 그 전까지는 spring에서 다른 서버를 호출해본 적이 없었기 때문에 어떻게 하는지에 대한 궁금증이 있었는데 이번 기회에 알게 될 수 있었다. 🤷‍♂️ feign은 그래서 뭔데! - Netflix에서 만든 HTTP client binder로서 기존 http client 작성을 쉽게 만들어주는 라이브러리이다. - interface를 작성하고 annotation을 붙여서 쉽게 사용할 수 있기 때문에, HTTP API를 균일하게 바인딩하여 복잡성을 줄여준다. - 이전에는 RestTemplate 방식과 WebClient 방식이 존재했지만 현재 스프링 커뮤니티에서는 RestTemp..

JVM/Spring

[SPRING]@Transactional Annotation 알고 쓰자

- 첫 작성일 : 21년 3월 21일 velog 블로그 1. 서론 초반 @Transactional 어노테이션에 대해 자세히 알아보지 않고, 막연히 롤백때 사용한다고 하여 SQL C,U,D 를 할 때마다 메소드 위에 붙여서 사용하곤 하였다. 하지만, 내 코드를 보신 선임께서 단지 @Transactional 만 붙이면 롤백이 안되고, @Transactional(rollbackFor = Exception.class) 을 붙여야 된다고 알려주셨다. 여기에서 뭐 때문인지에 대해 호기심에 트랜잭션에 대해 찾아보다가 내가 생각했던 것 보다 더 많은 기능들이 존재한다는 것을 알고 정리해보려 한다. 2. 트랜잭션이 뭐지? 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다. begin, c..

JVM/Java

[Java]예외(Exception)관련 정리

- 첫 작성일 : 3월 20일 velog 블로그 서론 트랜잭션에 대해 공부하다보니 예외를 빼놓을 수 없어서 한 번 정리한다. 예외(Exception) 란? 예외는 크게 두 종류로 나뉘게 된다. Checked Exception 와 Unchecked Exception 그리고 예외와 별개로 오류(Error)가 있다. 예외란 개발자가 로직을 잘못 짰거나 혹은 사용자가 잘못된 값을 넘겨 정상적인 프로그램 흐름에 벗어나는 행위를 말한다. 그래서 미리 예측을 하여 예외를 잡을 수 있다. 오류는 하드웨어에서 문제가 발생하는 경우도 있고, 완전 잘못된 로직을 짠 경우 등 시스템 레벨에서 발생하는 비정상적인 행위이기 때문에 이를 미리 예측해서 막을 수도 신경을 쓸 필요도 없다. Checked Exception / Unch..

Hyo Kim
'JAVA11' 태그의 글 목록