자바에서 LINQ 사용?
Java 관련해서 Linq라는 단어를 누군가 언급해서 놀라운 마음으로 살펴보았습니다. ^^
대충 다음과 같은 것들이 나오더군요.
What is JaQu
; http://www.h2database.com/html/jaqu.html
jpropel-light
; https://github.com/nicholas22/jpropel-light
위의 JaQu의 경우에 "JaQu is something like LINQ for Java"와 같은 설명을 포함하고 있는데... 글쎄요. 뭔가 LINQ에 대한 오해가 있는 것이 아닌가 싶습니다.
아래는 JaQu에서 소개된 코드입니다.
Product p = new Product();
List<Product> soldOutProducts =
db.from(p).where(p.unitsInStock).is(0).select();
뭔가 이상한 감이 느껴지지 않나요?
단적인 예로, C#의 경우 다음과 같은 구문을 LINQ라고 하지 않습니다.
List<Product> = data.Where(a => a.Price > 100);
반면, 아래의 구문을 LINQ라고 하지요.
List<Product> = from a in data
where a.Price > 100
select a;
C#과 VB.NET을 제외한 다른 언어에서 Where(), Select(), OrderBy() 등의 확장 메서드를 이용하여 코드를 작성했다고 해서 그 언어가 LINQ를 지원한다고 하지는 않습니다. 그냥 함수 호출에 불과한 것입니다.
말 그대로, LINQ == Language INtegrated Query입니다. 언어에 통합된 쿼리라는 것은, from / in, where, select와 같은 '언어 차원에서 지원되는 예약어'와 얽혔을 때 그것을 LINQ라고 부르는 것입니다.
물론, 자바에서 꼭 C#과 똑같이 from / in, where, select와 같은 예약어를 정의할 필요는 없습니다. 그래도 함수 호출만으로 이뤄지는 것을 LINQ라고 보기에는 무리가 있습니다. 어느 정도 Java 구문 자체에서 LINQ를 위한 예약어가 등장해 줘야 비로소 자바에서 LINQ 지원이 된다고 볼 수 있겠지요. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]