본문 바로가기

java12

자바에서 효율적으로 Exception 커스텀하기 원하는 기능을 찾다가 발견해서 올립니다. 다만 해당 글에 대한 정보들이 다 조금은 지난글이라 최근에도 이런식으로 사용하는지 모르겠네요. 혹시라도 최신 방법을 아시면 댓글 남겨주세요. :( 에러케이스 1. 어디서 발생하는지 알고, 무엇이 문제인지도 알지만 Exception으로 관리해야 하는 경우 ex) 토큰만료, 권한검증 (실제 토큰 처리를 하는 더 좋은 방법이 존재할 수 있음) Authentication은 내가 생성한것도 아니고 라이브러리를 가져다 쓰거나 애초에 Exception으로 막는방법밖에 제공되지 않는다고 가정하겠다. 그렇다면 해당 메서드의 문제는 에러를 Exception으로 쳐낼수밖에 없는 부분에 있다. 나는 해당 에러의 원인도 알고 위치도 알지만 Exception으로 떨궈내는 순간 stack .. 2022. 2. 8.
H2 In-memory 사용시 delete log 확인 in-memory db를 사용하여 repository delete를 테스트 하는 법 테스트 폴더에 application.yml을 생성하여 in-memory database를 사용중이다. application.yml 안 내용은 다음과 같다. 아무것도 없어도 되지만 로그를 보기 위해서 show-sql를 추가했다. format이 잡힌 형식으로 뽑아낼수도 있지만 여러개의 데이터를 insert하고 delete 하기 위해서 하지 않았다. 내가 짠 코드는 다음과 같다. 해당 코드를 작성한 이유는 N+1 및 jpa delete에 대해 공부하고 블로그 글을 작성하려고 했다. 문제는 내가 예상한 insert 100개의 로그는 정상적으로 나타나지만 delete 로그가 나타나지 않는것이다. 이걸 위해서 application... 2021. 11. 25.
QueryDSL 서브쿼리 Sort 적용 for (Sort.Order order : pageable.getSort()) { PathBuilder path = new PathBuilder(Object.class, order.getProperty()); query.where(builder).orderBy(new OrderSpecifier(com.querydsl.core.types.Order.valueOf(order.getDirection().name()), path)); } 1. 위와 같이 작성할 경우, 프론트에서 as 로 표현하는 값을 내려주면 entity와 무관하게 정렬 가능. PathBuilder entityPath = new PathBuilder(Entity.class, "entity"); 2. 위와 같은 형태로 사용할 경우 pageable.. 2021. 10. 12.
Hash - 1 해당 글을 포스트하는 이유는 문제를 풀면서 기존에 했던 생각과 바뀐 생각을 기록하여 잊지 않게하기 위함임. 프로그래머스에서 제공하는 해시 기본 문제 완주하지 못한 선수와 전화번호 목록을 풀때 너무 귀찮아서 정답을 봤더니 같은 언어로 완료 처리가 되지 않는다.........주의할 것ㅠ 1. 완주하지 못한 선수 2개의 배열이 주어지고 그 중 일치하지 않는 항목은 찾는 문제 String[] str1 = {"abc", "qwe", "zxc"}; String[] str2 = {"qwe", "abc"}; 대충 이런식으로 정렬되지 않은 두 개의 배열에서 일치하지 않는 하나의 값을 return하는 문제였다. 처음 풀때 중점을 둔 부분은 for을 한 번만 도는것이였다. 내 첫 생각은 다음과 비슷했다. (너무 하기 싫어서.. 2021. 6. 8.
VSCODE 자바 컴파일 (Linux) VSCODE에서 JAVA 개발환경 구성하기 VSCODE에서 SSH로 리눅스를 접근, JAVA 개발환경 설정하기 Linux에서 Openjdk를 설치한다. jdk 리스트 확인 yum list java*jdk-devel jdk 설치 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 vscode에서 필요한 Java 플러그인 직접 설치하지 않아도 자바에 관련된 플러그인이 없을때 .java 파일을 만들면 vscode에서 알아서 안내해줌, 만약 안내창이 뜨지 않거나 설치가 안되면 서버에 위 사진과 같은 extension을 전부 설치하면 된다. extensions 설치가 끝나면 다음과 같이 자바 코드를 짰을때 run과 Debug가 생김. (이것때문에 했다) 가장 중요한 한 줄.. 2020. 9. 11.
인터페이스와 추상 클래스 인터페이스와 추상 클래스입니다. public interface One { //Interface public void make(); } public abstract class Two { public void remove(){ //Abstract Class } } 차이점이 보이시나요? Interface는 make(); 까지만 작성하였고 abstract class는 remove(){ }까지 작성했네요. 인터페이스에 make() 메소드는 내용을 구성하면 안됩니다. 오직 껍데기만 존재해야 하죠. 반대로 추상클래스는 작성한 remove() 메소드는내용를 작성해야 합니다. 그 이유는 인터페이스에 구성되는 모든 메소드가 추상메소드 이기 때문입니다. 추상 메소드는 일반 변수들을 포함할 수 없습니다. 실제 interfac.. 2018. 11. 28.