Java

· Java
⚡ 개요근본적으로 동적 쿼리를 작성해야 하는 이유가 뭘까에 대해서 생각을 해봐야 한다.데이터 베이스의 테이블 구조 또는 사용자 입력에 따라 조건 변경, UI에 따른 세부 조건 변경등 여러가지 이유가 있을수 있다. 만약 조회 하는 테이블은 같은데 조건만 달라지는 경우라면 동적 쿼리를 사용하지 않는다면 중복된 코드가 발생하고 이는 생산성 및 유지보수 측면에서 좋지 않은 결과를 가져온다고 생각을 한다. 예전에는 myBatis에서 쿼리를 작성할떄는 동적으로 param을 보내서 조회 하도록 작업을 하고 있었을 것이며, JPA를 사용 하는 개발자의 경우 초기에는 어떻게 동적 쿼리를 작업 해야하는지 모르는 사람한테 유용한 정보가 될거라고 생각한다. 내가 JPA를 사용하면서 동적 쿼리 및 배치 쿼리를 작업하는 방법에 ..
· Java
⚡ 개요 내부에서 JPA를 사용하면서 entity에서 Cascade 옵션을 사용한 개발자분이 있었고, 이때 일부 데이터가 아무 값 없이 생성이 되거나 삭제되는 이슈가 발생을 했다. 다행히 문제점이 Cascade에 있다고 판단을 해서 수정을 했지만 실제 고객사에 반영이 되었다면 큰 문제가 발생했을것이다. 그래서 사용시 주의 사항 및 내용을 정리 하려고 한다. 📒 Cascade (영속성 전이) 특정 엔티티를 영속상태로 만들 때 연관관계에 있는 엔티티도 함께 영속상태로 만들기 위해서 사용한다. 부모 엔티티를 다룰때 연관 되어있는 자식 엔티티까지 다룰수 있게 해준다. JPA에서는 Cascade 을 통해서 영속성을 다룰수 있도록 도와준다. 이와 관련된 옵션들이 존재한다. CascadeType.ALL: 모든 Cas..
· Java
⚡ 개요 java 에서 날짜를 특정 타입으로 변환을 할 때가 존재한다. 자주 사용을 하는 변환 함수에 대해서는 함수를 쓰면서 바로 사용을 하는 경우도 있지만 자주 사용하지 않는다면 내부 소스를 찾아보거나 검색을 하게 된다. (최근에 날짜 변환에 대해서 기억이 잘 나지 않아서 검색을 좀 자주 하게 되었는데 정리를 좀 해놔야겠다고 생각을 했다.) 자바에서 사용하는 함수에 대해서 정리를 하겠지만 함수를 까보면 어느 정도 다른 언어에서도 충분히 비슷한 함수가 존재하거나 없으면 만들어서 사용 가능할 거라고 생각을 한다. ⚡ 날짜 변환 사용 방법 간단하게 내가 사용하는 방법에 대해서만 정리를 하려고 한다. 참고로 LocalDateTime , LocalDate, LocalTime 은 내부적으로 변환에 대해서 지원하는..
· Java
⚡ 내용 정리아래의 경고가 발생하는 원인은 leakDetectionThreshold 옵션으로 인해서 아래의 메모리 이슈가 발생하는것으로 파악 되며 옵션을 끄면 나오지 않는다.  default 시간이 2s 인데 2s 가 넘어가게 되면 로그가 찍히게 되며, application.yml 설정상으로 시간을 늘릴수도 있다.WARN (2023-12-29 17:26:17,223) : com.zaxxer.hikari.pool.ProxyLeakTask - Connection leak detection triggered for ConnectionID:10853 ClientConnectionId: 5cc00177-8fe4-4504-8b9e-4fbb024ef851 on thread http-nio-8080-exec-58, ..
· Java
⚡ 진행 상황 개인 및 회사 일정이 많아서 개인적으로 블로그 및 파이썬에 대한 개발을 많이 진행하지는 못했다. :( 주말에라도 틈틈히 공부 하려고 했으나 따로 진행 하고 있는 프로젝트 및 추가 일정들로 인해서 놔버렸었다. 일단 그래도 진행 상황에 대해서 늦었지만 어느정도 정리를 하고 넘어 가려고 한다. 회사에서 개발을 진행 하면서 틈틈히 공통 함수 및 자주 사용하는 함수들에 대해서는 파이썬으로 만들면서 어느정도 기본적인 능력치를 차곡차곡 쌓아가고 있다. 파이썬하면 가장 많이 사용하고 있는 웹 프레임워크 Django(장고) 를 통해서 페이지 하나뿐인 게시판을 만들었다. 일단 어떤 느낌으로 동작하는지에 대해서는 개발을 하면서 동작 방식에 대해서 찾아보고 공부를 진행 하고 있다. 아직은 이해하지 못한 부분이 ..
· Java
⚡ java 21 LTS 릴리즈 버전 java 21 릴리즈가 2023년 9월 19일 어제 날짜로 공개가 되었다. 😁 해당 버전이 나오기 전부터 java 21 버전은 java의 혁신이라고 많이 얘기를 했고, 많은 기대를 받고 있는 버전중에 하나이다. 추가된 주요 기능을 하나씩 파악을 하고 있으며 추가된 기능에 대해서 정리를 해보려고 한다. ⚡ 주요 기능 주요 기능에 대해서 자세하게 설명은 힘들거 같다(...) 주요 기능에 대해서 개인적으로 정리 하면서 읽어보고 있지만 중요한 내용이 너무 많이 있다. 추가적은 내용은 링크를 타고 들어가서 어떤 의도로 개발을 했으면 어떤 내용이 변경되 었는지 한번 더 확인 해보면 좋을거 같다. :) 👍 가상 스레드 ( JEP 444 ) 가상 스레드는 OS가 아닌 JDK에서 제..
· Java
⚡ 개요 Stream의 경우 자바8에서 추가된 이후 람다를 활용한 기술이다. 확실히 Stream을 사용해서 로직을 처리하다 보면 가독성도 올라가고 제공되는 함수가 다양하다 보니 계속해서 stream을 활용해서 처리하려고 하는 부분이 존재한다. Stream에서 froEach를 사용하면서 연산이 진행되는 동안에 로직에 대한 처리가 필요한 경우가 있다. 이때 과연 forEach를 사용하는것이 옮은 방향성인가에 대해서 한번 정리를 하려고 한다. ⚡ 내용 기본적으로 stream은 "데이터의 흐름" 이다. 그러다 보니 기존 for-loop와 다르게 강제로 종료를 시키는 방법이 존재하지 않는다. 결국 전체를 읽어서 처리하는 경우가 아닌 중간에 로직적으로 멈춰야 하는 경우가 생긴다면 비효율이 발생하게 된다. 실제 공식..
· Java
⚡ 개요 java 에서 String을 사용할 때 분명 null 또는 빈 문자열 체크를 무조건 한 번은 하게 된다. 이때 사용하는 isEmpty 와 isBlank 에 대해서 내부 동작은 어떻게 하는지 그래서 어떤 차이가 있는지 한번 정리하려고 한다. 매우 간단한 내용이 될것이다. 하지만 자주 사용하니 혹시 내가 놓친 부분이 있다면 한 번쯤 봐도 좋을 듯싶다. 📎 isEmpty String 클래스 내부에 오버라이딩 되어있는 isEmpty 메소드이다. @Override public boolean isEmpty() { return value.length == 0; } 위의 내용과 같이 별 내용이 없다. 문자열의 길이가 0 인경우 true를 리턴해주는 메소드 이다. 📎 isBlank isBlank 의 경우는 ja..
· Java
⚡ Hibernate ? 하이버네이트(Hibernate)는 자바 언어로 작성된 오픈 소스 ORM(Object-Relational Mapping) 프레임워크다. 하이버네이트의 설계 목표는 SQL과 JDBC를 사용한 수동 데이터 지속성 관련 프로그래밍 작업의 95%를 개발자가 해방시키는데 있다고 한다. 그렇다고 해서 SQL을 모르면 안 되며 오히려 더 많은 기술과 지식에 대한 투자가 필요하다. 객체 지향 프로그래밍에서 사용되는 클래스와 관계형 데이터베이스 테이블 간의 매핑을 단순화하고 추상화하여 개발자가 데이터베이스를 다루는 작업을 더욱 편리하게 하기 위해서 만들어졌다. 조금 더 쉽게 설명해서 JAVA 클래스를 통해서 Oracle, mssql, mraia 등의 DB에 상관없이 일관된 코드로 데이터 베이스 작..
HaeTae
'Java' 카테고리의 글 목록