java 14

[subList] Java.Util.ArrayList$SubList Deserialization 이슈 해결

Dto에서 선언한 List를 Service로직이나 Dao단에서 subList를 이용할 경우가 있습니다. 해당 subList를 통해 특정 길이로 잘라서 아래와 같이 사용하는 경우가 있었습니다. List dataList = new ArrayList(); dataList = dataList.subList(0,5); subList는 fromIndex, toIndex를 받아 해당하는 크기만큼 리스트를 반환합니다. 해당 값을 Redis로 캐싱할 때 아래와 같은 이슈가 발생했습니다. Redis deserialization error could not read JSON: cannot construct instance of ` Java util. ArrayList$SubList` subList로 자르면서 캐싱된 데이터 ..

Java 2022.03.30

QueryDSL StringTemplate 사용

* QueryDSL StringTemplate 사용 QueryDSL에서도 SQL Function 사용을 통해 쿼리를 간단하게 작성해야 할 경우가 있습니다. 이 경우 Expressions.stringTemplate() 혹은 Expressions.numberTemplate() 등을 통해 SQL Function을 사용할 수 있습니다. 이를 통해 Date cast, lower case 작성 등을 QueryDSL에서 쉽게 사용 가능합니다. Postgres에서 사용하는 간단한 예시 쿼리문을 몇개 살펴보겠습니다. 예시1) Date 추출 JPAQuery query = this.queryFactory.selectfrom(myTable) .groupby(Expressions.stringTemplate( "DATE_FORM..

Java 2022.02.23

[Java-17] 자바 암호화 확장 정책 다운 및 설치

■ JCE 다운 및 설치 Java Cryptography Extension(JCE) 다운로드 및 설치 방법을 정리합니다. 다운로드 링크는 아래와 같습니다.(반드시 jdk 버전을 확인해야 합니다. 아래는 java8버전 입니다) http://www.oracle.com/technetwork/java/javase/downloads/index.html 링크 이동후 아래쪽에 보시면 'Additional Resources' 목록에 위치해 있습니다. Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 위 제목 확인 후 다운로드하시면 됩니다. 압축을 풀고, 기존 ${JAVA_HOME}/jre/lib/secu..

Java 2018.05.08

[Java-16] Project language level 설정

안녕하세요. 트러블 슈팅 기록입니다. 간단하고 쉽게 해결 가능하지만, 정보가 없어 여기에 기록합니다. ■ usage of api documented as @since 1.6+ 'usage of api documented as @since 1.6+' 컴파일 시 위와 같은 오류가 발생했습니다. 처음보는 오류라 무엇일까... 찾아보던 중 해결한 결과를 기록하겠습니다. 해결방안은 간단한데요. Project Settings으로 가서 Project language level을 1.6 이상으로 설정해주면됩니다. 기본으로 SDK default로 설정이 되어 있다면, 현재 SDK 버전에 맞게 language level을 설정해요 그래서 이로인해 오류가 발생할 확률은 적을 것 같습니다만.... 무슨 이유에서인지 해당 오류..

Java 2018.05.07

[Java-15] JVM 개념과 구조

■ JVM (Java Virtual Machine) JAVA의 JVM이란 개념에 대해서 정리하겠습니다. JVM이란 Java Virtual Machine의 약자로 어떤 하드웨어 및 OS에서든 자바 실행 코드의 변경 없이 JAVA 코드를 실행시킬 수 있게 해주는 가상 머신입니다. JAVA는 어디서든 자바 바이트 코드를 해석하고 실행할 수 있도록 가상 머신 기반으로 작동하도록 설계되었는데요. 이 핵심 역할을 하는 것이 바로 JVM입니다. ● JVM 구조 JVM구조를 먼저 그림으로 보겠습니다. 위 그림이 JVM의 전체 구조입니다. 특히 JVM을 이해하는 데 있어서는 위에 있는 Java Source Code, Java Byte Code에 대해 이해하는 것이 중요합니다. ▶ Java Byte Code 우리가 작성한..

Java 2017.11.18

[Java-11] 스트림 (Stream)

안녕하세요. 오늘은 스트림에 대해서 정리해보겠습니다. ■ 스트림(Stream) 먼저 스트림이란 ?컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자 크게 중간 처리와 최종 처리로 나뉘어 집니다.중간 처리 : 필터링, 매핑, 정렬, 그룹핑 등최종 처리 : 합계, 평균, 카운팅 등 ● 특징 - 람다식으로 요소 처리 코드를 제공 - 내부 반복자를 사용한 병렬처리 - 중간 처리와 최종처리를 할 수 있다. 여기서 람다식은 무엇일까요? 람다식 역시 자바8에서 등장한 개념입니다. 다음 포스팅(또는 그 다음 포스팅...)에서 정리할 예정입니다. 여기서는 간단히 정의만 알고 넘어가죠! 람다식의 정의는 아래와 같습니다.식별자 없이 실행 가능한 익명의 함수 표현식 이제 람다식은 중간중간 계속 나..

Java 2017.03.02

[Java-10] 예외 처리(Exception)

■ [Java-10] 예외처리 (Exception) 안녕하세요. 오늘은 JAVA의 예외처리에 대해서 알아보겠습니다. 순서는 아래와 같습니다! ■ 예외란?■ 실행 예외의 종류■ 예외 처리 코드■ 예외 떠넘기기■ 사용자 정의 예외 ■ 예외란? 예외란 오류의 한 종류입니다. 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 바로 예외(Exception)이라 합니다. 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있어요 그렇기에 예외 처리가 아주 중요하죠. 예외는 2가지 종류로 나뉠 수 있습니다.- 실행 예외 (Runtime Exceptions)- 일반 예외 (Exceptions) ■ 실행 예외(Runtime Exceptions)의 종류 실..

Java 2017.02.18

[Java-8] 상속

■ [Java-8] 상속 안녕하세요. 오늘은 JAVA의 상속에 대해서 알아보겠습니다. 상속이란 물려주는 것을 말하죠. 자바에서 상속 또한 물려줌을 뜻합니다. ■ 상속이란?■ 메소드 재정의 ■ 상속이란? 자바에서 상속의 개념은 부모 클래스의 멤버를 자식 클래스에게 물려주는 행위를 말합니다. 부모 클래스를 상위 클래스, 자식 클래스를 하위 클래스라고 지칭합니다. 장점- 유지보수가 효율적으로 가능- 부모 클래스의 수정으로 모든 자식 클래스의 수정효과가 있음 사용 방법은 아래와 같습니다. class 자식클래스 extends 부모클래스 { //필드 //생성자 //메소드} ■ 메소드 재정의 두 번째로는 메소드 재정의 (Override)를 소개하겠습니다. 부모 클래스의 모든 메소드가 자식 클래스에게 맞지 않게 코딩되..

Java 2017.02.05

[Java-6] 객체와 클래스

■ [Java-6] 객체와 클래스 안녕하세요. 오늘은 JAVA의 클래스에 대해서 알아보겠습니다. 클래스란 무엇이고 어떻게 구성되어 있는지 다음 목차에 따라 정리하겠습니다. ■ 객체와 클래스■ 클래스 선언■ 클래스 구성 요소 ■ 객체와 클래스 클래스란 무엇인가에 대해 알기 위해 객체와 클래스의 관계에 대해서 꼭 알아야합니다. 그렇다면 객체와 클래스는 각각 무엇을 뜻할까요? 객체는 자신의 속성을 가지고, 식별 가능한 것들을 뜻합니다. 일반적으로 자동차, 자전거 등이 객체라고 할 수 있습니다. 클래스란 이러한 객체를 만들기 위한 설계도라고 생각하시면 됩니다. 클래스에 정의된 내용을 바탕으로 만들어진 객체를 '인스턴스'라고도 합니다. 즉 자동자는 자동차 클래스의 객체 또는 인스턴스이지요. 그리고 이러한 과정은 ..

Java 2017.01.28

[Java-5] 참조 타입 (문자열, 배열, 열거)

■ [Java-5] 참조 타입 안녕하세요. 오늘은 JAVA의 참조 타입에 대해 정리하겠습니다. 참조 타입이라고해서 생소하게 느껴질수도 있겠는데요. 알고보면 이 또한 익숙한 개념입니다. 여기서는 아래 목차와 같이 살펴보겠습니다. ■ 데이터 타입■ Null■ String 타입■ 배열 타입■ 열거 타입 ■ 데이터 타입 먼저 데이터 타입에 대해 정리하고 시작하겠습니다. 이번 포스팅에서 다룰 참조 타입의 상위 개념이 바로 데이터 타입인데요. 데이터 타입에는 크게 2가지의 하위 개념이 있습니다. 기본 타입과 참조 타입이라고 합시다! 기본 타입 - 정수(char, int, long 등), 실수(float, double), 논리(boolean)등의 타입참조 타입 - 배열, 열거, 클래스, 인터페이스 등 객체의 '번지'..

Java 2017.01.24