본문 바로가기
반응형

Language/자바&코틀린7

코틀린 querydsl, mapstruct 생성자에 따른 동작 방식 코틀린, 스프링, jpa, querydsl 환경에서 불변객체를 만드는 방법에 대해 알아보겠다. 자바 위주의 스프링, querydsl, mapstruct 개념이나 사용법을 그대로 받아들이려고 하면 코틀린에서 객체의 불변성이 깨지거나 디폴트값 선언으로 비즈니스 규칙을 깨트리는 생성자들이 생겨날 수 있다. 나의 경우도 그러하였는데 코틀린, 스프링, querydsl, mapstruct 환경에서 객체 불변성을 지키며 디폴트값을 제거하는 방법에 대해 공유하겠다. Querydsl을 통해 매핑받는 객체 디폴트 값 없애기 projection.bean, projection.fields projection.bean 방식은 자바 빈 객체 형태만 받을 수 있다. 허나 세터 메서드가 없어도 리플렉션을 통해 매핑이 가능하다고 한다.. 2024. 3. 16.
자바 예외의 종류와 처리방식 예외종류 자바에서 프로그램이 비정상적인 동작을 일으키는 경우 Error 또는 Exception이 발생하게 된다. Error와 Exception의 차이는 복구가능하냐 복구 불가능하냐로 구분할 수 있습니다. 문법, 타입체크와 같은 과정을 통해 발생하는 컴파일 타임에러와 OutOfMemoryError나 StackOverflowError와 같은 실행중에 발생할 수 있는 런타임 에러는 개발자가 복구할 수 있는 동작이 아니다. 그에 반면 IOException , SqlException, NullPoiterException과 같은 예외는 개발자가 예외를 catch하여 처리할 수 있다. Error와 Exception 모두 Throwable 클래스를 상속 받는다. Throwable 클래스는 message와 stackTr.. 2024. 2. 19.
컴파일 타임 의존성과 런타임 의존성 객체지향 프로그래밍에서는 객체간의 의존성이 빈번하게 발생한다. 의존이란 나(객체)의 변경이 나를 사용하는 다른 객체에 영향을 미치는 것을 말한다. 이러한 의존관계의 설정은 컴파일 타임에 결정되기도 하고 런타임에 결정되기도 한다. 컴파일 타임 의존성과 런타임 의존성은 말그대로 어느 시점에 의존성이 결정되느냐의 차이이다. 이 시점의 차이를 구분하기 어렵다면 일단은 아래와 같이 이해해보자. 컴파일 타임 의존성 : 컴파일러 관할 영역 -> 순수 프로그래밍 코드를 통해 의존관계 확인 가능 -> 의존성 변경시 코드 변경 필요 런타임 의존성 : 컴파일러 관할 영역 밖 -> xml, 어노테이션을 통해 의존관계 확인 가능 -> 의존성 변경시 코드 변경 필요X 컴파일 타임과 런타임 의존성의 구분 컴파일러는 자바 코드를 바.. 2024. 2. 11.
[진행중][자바, 코틀린] 제너릭이란? 그리고 공변성과 원시(primitive) 타입 비허용 제너릭이란? 클래스, 인터페이스, 함수에서 사용되는 필드, 매개변수, 반환타입을 미리 정의하지 않고 사용하는 시점에 특정 타입을 지정할 수 있도록 해주는 기법을 제너릭(Generic)이라고 한다. 제너릭을 통해 클래스나 메서드를 각각의 타입마다 재정의할 필요 없이 코드 중복 없이 여러 타입에 대하여 재사용할 수 있다. 자바나 코틀린에서는 컴파일 단계에서 안정적인 타입체크를 함으로써 여러타입에 대해 안정적으로 사용할 수 있게 지원하고 있다. *용어 정의 제너릭 타입 : 여러 타입을 받을 수 있는 요소, 즉 제너릭 개념이 적용된 타입을 제너릭 타입이라고 한다. 원시(raw) 타입 : 제너릭이 도입되기 이전 다양한 데이터 타입을 다루기 위해 Object타입으로 데이터를 형변환하여 사용하는 타입 제너릭 메서드(.. 2023. 12. 20.
반응형