Paths
Kotlin JDSL์ JPQL์ path expression์ ํํํ๊ธฐ ์ํด์ Path ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. Path๋ฅผ ๋ง๋ค๊ธฐ ์ํด, path() ์ invoke()๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
// Book.isbn.value
path(Book::isbn).path(Isbn::value)
path(Book::isbn)(Isbn::value)
// b.isbn.value
entity(Book::class, "b").path(Book::isbn).path(Isbn::value)
entity(Book::class, "b")(Book::isbn)(Isbn::value)Java entity
path() ์ invoke()๋ KProperty1 ๋๋ KFuction1๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค. KFunction1์ ๊ฒฝ์ฐ, getter๋ง public์ธ Java๋ก ์ ์ธํ entity๋ฅผ ์ฌ์ฉํ ๋ ์ ์ฉํฉ๋๋ค.
@Entity
public class Book {
@Id
private Long id;
private String title;
public String getTitle() {
return title;
}
}Kotlin JDSL์ getter ์ด๋ฆ์์ ํ๋กํผํฐ ์ด๋ฆ์ ์ถ๋ก ํ๊ธฐ ์ํด ๋ค์ ๊ท์น์ ๋ฐ๋ฆ ๋๋ค.
is๋ก ์์ํ๋ ๊ฒฝ์ฐ ์ด๋ฆ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.get์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐget์ ์ ๊ฑฐํ๊ณ ์ดํ ์ฒซ ๊ธ์๋ฅผ ์๋ฌธ์๋ก ๋ณ๊ฒฝํฉ๋๋ค.๊ทธ ์ธ์ ๊ฒฝ์ฐ, ์ด๋ฆ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
์ ๊ท์น ๋์ ๋๋ง์ ๊ท์น์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, JpqlPropertyIntrospector๋ฅผ ๊ตฌํํ๊ณ ์ด๋ฅผ ์ด๋ฅผ RenderContext์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ Custom DSL์ ์ฐธ๊ณ ํ์ธ์. Spring์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด Spring supports๋ ์ฐธ๊ณ ํ์ธ์.
Expression
Path๋ select clause ๋ predicate ๋ฑ์์ Expression์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
Treat
Path์ ํ์
์ ์์ ํ์
์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด, treat()๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Last updated