метод scala slick пока не могу понять

Я пытаюсь понять некоторые работы Slick и что для этого нужно.

Вот это пример:

package models

case class Bar(id: Option[Int] = None, name: String)

object Bars extends Table[Bar]("bar") {
  def id = column[Int]("id", O.PrimaryKey, O.AutoInc)

  // This is the primary key column
  def name = column[String]("name")

  // Every table needs a * projection with the same type as the table's type parameter
  def * = id.? ~ name (Bar, Bar.unapply _)
}

Может ли кто-нибудь объяснить мне, чтос целью* метод здесь, что это, Зачемunapply? и что такое проекция - метод~ возвращает экземпляр?Projection2

Ответы на вопрос(2)

Ваш ответ на вопрос