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
개발 지식/자바 개발자를 위한 코틀린 입문
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
개발 지식/자바 개발자를 위한 코틀린 입문
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
개발 지식/자바 개발자를 위한 코틀린 입문
- 확장 함수 코틀린은 자바와 100% 호환하는 것을 목표로 한다 자바 코드에서 코틀린 함수를 추가하고 싶은데 자연스럽게 코틀린 코드를 추가해서 유지보수를 효율적으로 관리하고 싶다는 니즈에서 확장 함수가 등장했다 자바로 만들어진 라이브러리를 유지보수, 확장할 때 코틀린 코드를 덧붙이는 과정에서 어떤 클래스안에 있는 메소드처럼 호출할 수 있지만 가독성을 위해 함수는 밖에 만들 수 있게 하는 방식이 확장 함수 이다 즉, 함수의 코드 자체는 클래스 밖에 작성되어 있지만 마치 클래스 안에 있는 멤버 함수 처럼 호출해서 사용할 수 있다 fun main() { val str = "ABC" println(str.lastChar()) } /* fun 확장하려는클래스.함수명(parameter): 리턴타입 { this를 ..
자바 개발자를 위한 코틀린 입문 - Sealed Class
2023. 8. 9. 20:49
개발 지식/자바 개발자를 위한 코틀린 입문
- 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
개발 지식/자바 개발자를 위한 코틀린 입문
- 상속 관련 키워드 정리 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
개발 지식/자바 개발자를 위한 코틀린 입문
- 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
개발 지식/자바 개발자를 위한 코틀린 입문
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
개발 지식/자바 개발자를 위한 코틀린 입문
- 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..
RabbitMQ
2023. 4. 2. 17:06
개발 지식/DevOps
RabbitMQ를 통한 기대 효과 - 이전 글에서 설명했던 DB 병목 현상 해결 - 글 목록 데이터를 캐시로 저장하여 DB에 부담을 줄여줌 그럼 Message Queue 중 하나인 RabbitMQ를 사용해보자 0. I/O bound 어플리케이션 실행 이전 글에서 학습했던 내용을 실제 코드에 적용해보자 2023.04.02 - [DevOps] - DB I/O bound 애플리케이션 + Message Queue DB I/O bound 애플리케이션 + Message Queue 0. DB I/O bound 애플리케이션 성능 향상 방법 하드디스크를 많이 사용하는 파일 I/O bound 애플리케이션이라면 서버를 늘려서 성능 향상이 가능하다 하지만 보통은 DB를 사용하는 경우가 많고, DB I/O bo tong-dev..