본문 바로가기
반응형

백엔드/Java22

JOOQ 스프링 부트 새 버전이 나왔다. 변경점을 살펴보다가 JOOQ라는 라이브러리 이름이 눈에 들어왔다. 조사해보니 JPA를 안쓰는 환경에서 QueryDSL처럼 쿼리를 짤 수 있는 방법을 제공하는 것으로 보인다. 배워봤자 회사에서 쓸일은 없을것 같지만... 나중을 위해 링크를 남겨두자. https://sightstudio.tistory.com/54 [입문] Jooq에 대해 알아보자 필자는 JPA로 개발할때 QueryDSL-jpa를 활용한 Type-Safe 한 SQL 작성을 굉장히 선호합니다. 사람이 실수 할 수 있는 여지를 미연에 방지할 수 있기 때문입니다. 하지만 회사에서 JPA가 아닌 프로젝트를 sightstudio.tistory.com https://sightstudio.tistory.com/66 Jooq.. 2023. 5. 22.
스트림 Stream 스트림이란 컨베이어 벨트 데이터 원본을 변경하지 않는다. 무제한으로 실시간으로 들어오는 데이터를 연결할 수도 있다. 중계 Operator는 기본적으로 lazy 하다. - 터미널 Operator를 만날때까지 실행되지 않는다. - stream을 만들어뒀다고 그 시점의 데이터 기준 stream이라고 착각하지 말자. 스트림 API는 크게 두가지 종류의 메서드로 나뉜다. - 중계(계속 이어지는) : stream을 return - 종료 : stream이 아닌 것을 return 순서가 상관없는 경우에는 parallelStream()을 사용하면 알아서 병렬적으로 처리가 된다. 내부적으로는 spliterator가 사용되어 동강동강 내서 병렬처리한다. 중계 오퍼레이터의 종류 Filter Map, FlatMap --> 꺼내.. 2021. 5. 18.
StringUtils.hasText 메서드 : C#의 String.IsNullorEmpty 메서드 대응 C#에서 문자열이 null 이거나 공백인지 검사하는 함수는 String.IsNullOrEmpty(string) 자바에서는 뭐 없나? 해서 점(.) 찍어보고 해도 안나와서 그냥 직접 적었는데 있었다. StringUtils.hasText(string) 패키지는 org.springframework.utils 근데 좀 길긴 하다. String에 바로 붙어있는게 아니라 2021. 3. 28.
Collectors.groupingBy 널(null) 키 사용하기 Map은 키와 밸류가 한 쌍이 되어 저장되는 자료구조 DB 설계가 세가지 데이터를 한방에 관리해서 각자 다른 PK를 가지는 테이블을 그룹핑해서 써야되는 일이 생겼다. 세종류의 PK가 있는데 하나의 데이터는 셋중에 하나의 값만 가지고 나머지는 null 값이 들어있다. 그룹핑을 쓰려니 아! SQL에서 그룹바이하면 null은 무시되는데? 라는 생각이 들어 찾아보니 역시나 는 아니고 SQL때문이 아니라 Map의 Key에는 널이 들어가면 안되기 때문에 에러가 난다고 한다. 좋은 방법은 아니지만 개발은 해야되니까 방법을 찾아야 한다. 해결 방법은 Optional을 쓰는 것이다. Optional을 키로 가지는 Map을 외부에서 접근하도록 유지하고 이러면 큰일난다. 내 경우에는 중간단계에서 Optional로 작업하고 .. 2021. 3. 8.
Optional Optional이 없었을 때 코딩 방식 null 체크 문장을 작성해야 했다. 사람인지라 까먹을 수 있다. null 을 리턴하는거 자체가 문제다. 리소스가 낭비된다. Optional을 써서 더 명시적으로 표현할 수 있게 됐다. 널일 수 있는 값의 경우 Optional 로 감싸서 리턴할 수 있다. 반환값으로만 쓰도록 권장한다. Optional 변수에도 null이 들어올 수 있으므로 외부에서 들어오는 경우 충분히 null일 수 있다. 맵의 키 타입 인스턴스 필드 프리미티브 타입은 그냥 Optional을 쓰면 박싱/언박싱이 자주 일어나서 성능이 떨어진다. 제공되는 OptionalInt, OptioanlLong 같은걸 쓰자. 나는 예외나 isPresent 보다는 간단하게 orElse를 주로 많이 쓴다. ㅋㅋㅋ 그.. 2021. 3. 7.
함수형 인터페이스 함수형 인터페이스 란? 추상 메서드가 하나인 인터페이스 추상 메서드가 하나란 말은 다른 메서드는 있어도 된다는 의미 default 메서드나, static 메서드는 있어도 된다~ 함수형 인터페이스로 쓸때 @FunctionalInterface 어노테이션을 붙여주면 함수형 인터페이스 요건에 어긋나는 경우 잘못됐다고 말해준다. 왜, 어디에 쓰면 좋은가? 구현해야 하는 추상 메서드가 하나이면 람다 표현식으로 코드를 줄일 수 있다. 함수를 매개변수(파라미터, 반환값)으로 전달할 수 있다. 사용법 단축키: control + .(점) 점을 누르거나 전구를 클릭하면 Convert to lambda expression이라고 뜬다. 자바에서 기본 제공하는 인터페이스 함수를 만들어서 쓸 수 있다. 인터페이스를 쓰면 함수를 조.. 2021. 3. 7.
반응형