Querydsl 기본 문법 정리
2023. 8. 19. 01:10
JPA
- 조건 검색 where(조건) null 값일 경우 무시 user.name.eq("홍길동") // name = '홍길동' user.name.ne("홍길동") // name != '홍길동' user.name.eq("홍길동").not() // name != '홍길동' user.name.isNotNull() // name is not null user.age.in(10, 20) // age in(10, 20) user.age.notIn(10, 20) // age not in(10, 20) user.age.between(10,30) // 10 30 user.age.loe(30) // age
자바 개발자를 위한 코틀린 입문 - scope function
2023. 8. 11. 12:48
Kotlin/자바 개발자를 위한 코틀린 입문
1. scope function이란? scope function은 영역 함수라는 뜻으로 일시적인 영역을 형성하는 함수이다 람다를 사용하여 일시적인 영역 생성하여 코드를 더 간결하게 만들거나, method chaining 활용 등에 쓰인다 2. scope function 종류 it this 람다 결과 값을 반환 let run 객체를 반환 also apply 확장 함수가 아님 with val person = Person("홍길동", 20) /* age 반환 */ val value1 = person.let { it.age } /* age 반환 */ val value2 = person.run { this.age } /* person 객체 반환 */ val value3 = person.also { it.age }..
자바 개발자를 위한 코틀린 입문 - 코틀린 함수형 프로그래밍
2023. 8. 10. 18:47
Kotlin/자바 개발자를 위한 코틀린 입문
1. 필터와 맵 - filter 특정 조건을 만족하는 데이터만 List에 저장 val apples = fruits.filter { fruit -> fruit.name == "사과" } - filterIndexed filter에서 인덱스가 함께 필요할 경우 val apples = fruits.filterIndexed { idx, fruit -> println(idx) fruit.name == "사과" } - map 필터링 후 특정 데이터만 저장하고 싶은 경우 val applePrices = fruits.filter { fruit -> fruit.name == "사과" } .map { fruit -> fruit.currentPrice } - mapIndexed map에서 인덱스가 함께 필요한 경우 val a..
자바 개발자를 위한 코틀린 입문 - 다양한 함수
2023. 8. 10. 14:28
Kotlin/자바 개발자를 위한 코틀린 입문
- 확장 함수 코틀린은 자바와 100% 호환하는 것을 목표로 한다 자바 코드에서 코틀린 함수를 추가하고 싶은데 자연스럽게 코틀린 코드를 추가해서 유지보수를 효율적으로 관리하고 싶다는 니즈에서 확장 함수가 등장했다 자바로 만들어진 라이브러리를 유지보수, 확장할 때 코틀린 코드를 덧붙이는 과정에서 어떤 클래스안에 있는 메소드처럼 호출할 수 있지만 가독성을 위해 함수는 밖에 만들 수 있게 하는 방식이 확장 함수 이다 즉, 함수의 코드 자체는 클래스 밖에 작성되어 있지만 마치 클래스 안에 있는 멤버 함수 처럼 호출해서 사용할 수 있다 fun main() { val str = "ABC" println(str.lastChar()) } /* fun 확장하려는클래스.함수명(parameter): 리턴타입 { this를 ..
자바 개발자를 위한 코틀린 입문 - Sealed Class
2023. 8. 9. 20:49
Kotlin/자바 개발자를 위한 코틀린 입문
- Sealed Class 정의와 용도 Sealed의 사전적 의미는 '봉인을 한' 이다 상속이 가능하도록 추상클래스를 만들까 하는데 (상속이 가능하도록 계층 구성을 하고 싶은데) 외부에서는 이 클래스를 상속받지 못하도록 하위 클래스를 봉인할 때 사용한다 컴파일 타임 때 하위 클래스의 타입을 모두 기억한다 (enum 클래스와 동일) 즉, 런타임 때 클래스 타입이 추가될 수 없다 하위 클래스는 같은 패키지에 있어야 한다 - Enum Class와 Sealed Class의 차이점 Sealed Class는 클래스를 상속받을 수 있다 Sealed Class의 하위 클래스는 멀티 인스턴스가 가능하다 - 구현 예시 sealed class HyundaiCar( val name: String, val price: Long..
자바 개발자를 위한 코틀린 입문 - 상속 방법과 주의점
2023. 8. 9. 13:10
Kotlin/자바 개발자를 위한 코틀린 입문
- 상속 관련 키워드 정리 final: override를 할 수 없게 한다. default로 보이지 않게 존재 open: override를 열어 준다 abstract: 반드시 override 해야 한다 override: 상위 타입을 오버라이드 하고 있다 - 상속 방법 코틀린에서는 상속 받을 때 ':'를 사용하여 선언한다 abstract class Animal( protected val species: String, protected val legCount: Int ) { abstract fun move() } class Cat( species: String ) : Animal(species, 4) { override fun move() { println("고양이 걸음") } } 변수 타입 선언과 다르게 ..
자바 개발자를 위한 코틀린 입문 - 동일성/동등성 비교 방법
2023. 8. 7. 13:27
Kotlin/자바 개발자를 위한 코틀린 입문
- compareTo 코틀린에서는 객체를 비교할 때 비교연산자를 사용해도 compareTo를 자동으로 호출해준다 fun main() { val money1 = JavaMoney(2_000L) val money2= JavaMoney(1_000L) /*@Override public int compareTo(@NotNull JavaMoney o) { return Long.compare(this.amount, o.amount); }*/ // 객체를 비교할 때 비교연산자를 사용해도 compareTo를 자동으로 호출해준다 if (money1 > money2) { println("Money1이 Money2보다 금액이 큽니다") } } - 동일성 비교 객체의 주소 값 비교 java: == kotlin: === fun ..
자바 개발자를 위한 코틀린 입문 - Kotlin의 특이한 타입 3가지
2023. 8. 7. 12:59
Kotlin/자바 개발자를 위한 코틀린 입문
Any Java의 Object 역할 (모든 객체의 최상위 타입) 모든 primitive Type의 최상의 타입도 Any Null을 포함하고 싶다면 Any?를 사용 equals / hashcode / toString 존재 Unit Java의 void와 동일한 역할 void와 다르게 Unit은 그 자체로 타입 인자로 사용 가능 함수형 프로그래에서 Unit은 단 하나의 인스턴스만 갖는 타입 의미 즉, 코틀린의 Unit은 실제 존재하는 타입이라는 것을 표현 Nothing 함수가 정상적으로 끝나지 않았다는 것을 표현하는 역할 무조건 예외를 반환하는 함수 / 무한 루프 함수 등 fun fail(message: String): Nothing { throw IllegalArgumentException(message) ..
자바 개발자를 위한 코틀린 입문 - null 처리 방법
2023. 8. 7. 12:53
Kotlin/자바 개발자를 위한 코틀린 입문
- nullable 코틀린에서 null이 들어갈 수 있는 타입은 완전히 다르게 간주된다 null 값이 존재하는 타입의 경우 ?를 붙여 표현한다 // val str: String = null// 컴파일 에러 발생 val str: String? = null - Safe Call null이 아닌 경우에만 호출 '?.' 를 통해 구현 fun main() { var str: String? = null //println(str.length) // 실행 불가 println(str?.length) // Safe Call: null이 아닐 경우 실행. null일 경우 null 값 반환 } - Elvis 연산자 null인 경우에만 호출 '?:' 를 통해 구현 fun startsWithA1(str: String?): Boo..
이펙티브 자바 3/E - 5.제네릭(1)
2023. 7. 14. 16:15
개발 서적/이펙티브 자바
1. raw 타입은 사용하지 말라 raw 타입이란 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을 때를 말한다 예컨대 List의 raw 타입은 매개변수가 없는 제네릭 타입인 List다 raw 타입은 타입 선언에서 제네릭 타입 정보가 전부 지워진 것처럼 동작하는데, 제네릭이 도래하기 전 코드와 호환되도록 하기 위한 궁여지책이라 할 수 있다 제네릭을 지원하기 전에는 컬렉션을 다음과 같이 선언했다 // Stamp 인스턴스만 취급한다 private final Collection stamps = ...; // 실수로 동전을 넣는다 stamps.add(new Coin(...));// "unchecked call" 경고 이 코드를 사용하면 실수로 도장(Stamp) 대신 동전(Coin)을 넣어도 아무 오류 없이 컴..