miércoles, 2 de mayo de 2012

Squeryl

Squeryl es un orm escrito en scala que provee un potente dsl de consulta a datos por lo poco que leí quede asombrado. No quiero ahondar en configuraciones, transacciones y esas cosas. Voy a hablar del dsl de consulta a datos, que esta orientado a ser fácil de usar, intuitivo y typesafe. 

Veamos un ejemplo:

def songCountByArtistId: Query[GroupWithMeasures[Long,Long]] =
  from(artists, songs)((a,s) =>
    where(a.id === s.artistId)
    groupBy(a.id)
    compute(countDistinct(s.id))
  )

Y esto va a devolver el siguiente query: 

Select
  Artist1.id as g0,
  count(distinct Song2.id) as c0
From
  Artist Artist1,
  Song Song2
Where
  (Artist1.id = Song2.artistId)
Group By
  Artist1.id

Noten lo legible que queda usando closures; muy bueno. Yo estuve viendo otros frameworks de consulta a datos, dejo el link para que comparen:

Dejo links de Squeryl: