본문 바로가기

전체 글73

kotlin data class 와 jackson 역직렬화 & spring과의 통합 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. 1. jackson 역직렬화 기본 동작과 kotlin data class 1-1. jackson 역직렬화 기본 동작 1. 기본생성자가 있을 때 기본생성자를 호출해 객체를 생성 후 setter를 통해 필드를 초기화한다. 2. 기본생성자가 없을 때 역직렬화 대상 객체의 필드 이름을 파라미터로 받는 생성자가 있는지 찾아본다. 필드 이름을 파라미터로 받는 생성자가 있다면, 해당 생성자를 통해 객체를 생성 후 아직 초기화되지 않는 필드는 setter를 통해 초기화한다. 이 경우에는 @JsonCreator와 @JsonProperty를 통해 역직렬화를 위한 생성자와 필드를 명시해줘야 한다. 3. 기본생성자도 없고 필드 이름.. 2023. 3. 26.
jpa hibernate 프록시와 entity equals 사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다. jpa hibernate 지연로딩과 프락시 지연로딩의 필요성: 연관된 엔티티가 항상 필요하지 않을 수 있다 아래와 같이 팀과 멤버 엔티티가 있다고 하자. @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column private String name; @JoinColumn(name = "team_id") @ManyToOne(fetch = FetchType.LAZY) pri.. 2023. 3. 25.
[Kotlin in Action] 6장: 코틀린 타입 시스템 > 6.1 널과 관련한 이야기 6.1 널 가능성 NPE는 Null 개념이 있는 모든 언어에서 하기 쉬운 실수이며, 했을 때 매우 치명적임 코틀린을 비롯한 최신 언어에서 null에 대한 접근 방법은 가능한 이 문제를 런타임에서 컴파일 시점으로 옮기는 것 널이 될 수 있는지 여부를 타입 시스템에 포함시켜, 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지할 수 있도록 하는 방향 6.1의 포인트 코틀린에서 널이 될 수 있는 타입과 없는 타입의 구분 널이 될 수 있는 타입에 대한 컴파일 시점의 처리들 널 처리 측면에서 자바 코드와 코틀린 코드의 호완성 6.1.1 널이 될 수 있는 타입 코틀린은 자바와 달리 널이 될 수 있는 것과 없는 것을 타입 수준에서 구분한다. {특정 타입}에? 를 붙이면 널이 될 수 있는 타입이라는 의미 타입 수준에서 .. 2023. 3. 18.
[Kotlin in Action] 5장: 람다로 프로그래밍 5.1 람다 식과 멤버 참조 5.1.2 람다와 컬랙션 람다가 없을 때 data class Person(val name: String, val age: Int) fun findTheOldest(peoples: List) { var maxAge = 0 var theOldest: Person? = null for(person in peoples) { if(person.age > maxAge) { maxAge = person.age theOldest = person } } println(theOldest) } fun main(args: Array) { val peoples = listOf(Person("soungho", 14), Person("sejin", 50)) findTheOldest(peoples) } .. 2023. 3. 5.