1

こんにちは私はScalaにかなり慣れていません。
Scalaを学びたい理由は次のとおりです。

  1. Javaからボイラープレートコードを取り除くため。
  2. さまざまなパラダイムで遊んでください。
  3. 新しいことを学ぶ楽しみのためだけに

私は演劇のウェブサイトのチュートリアルに従っています。

チュートリアルコードは次のとおりです。

Player.create(Player(Id(1), "bob@gmail.com", "secret", "Bob", false)) 
Post.create(Post(NotAssigned, "My 1st post", "Hello world", new Date, 1))

より深い知識を得るために、私は遊んで例を修正しました。
プレーヤーに事前定義されたIDを与えず、MySqlに割り当てさせることにしました。
MySqlでは、Player idをintとして定義しましたが、Postidをlongとして定義しました。//これは後で変更しますが、この例では重要です。

しかし、私に衝撃を与えたのは、私がそれをした方法です。2行目を見てください。これはまったくエレガントではありません。

val player = Player.create(Player(NotAssigned, "bob@gmail.com", "secret", "Bob", false)) 
val id = player.get.id.get.get.asInstanceOf[Number].intValue()
Post.create(Post(NotAssigned, "My 1st post", "Hello world", new Date, id)

さて、私の質問に対して、作成されたプレーヤーからより少ない方法でIDをintとして取得するにはどうすればよいですか?

4

1 に答える 1

4

NORMにどれだけのエネルギーを投資するかわかりません。

Play が TypeSafe スタックに取り込まれました。そのため、Play 2.0 で選択された SQL ラッパーとして ScalaQuery を微妙に宣伝しているわけではありません: https://github.com/playframework/Play20/wiki/ScalaDatabase

NORM はある種の一時しのぎの手段のように感じます。いくつかの優れた機能があり、Hibernate のような本格的な ORM のオーバーヘッドを回避し、ストレートな JDBC よりも優れています。ただし、型安全ではありません。したがって、TypeSafe の ScalaQuery が Play の標準になることは間違いありません (遅くとも第 3 四半期までには、Scala 2.10 [リフレクション付き!] と ScalaQuery の SLICK/SIQ への移行 [Google it] が登場します)。

私は現在、ScalaQuery マスター ブランチを使用しています (自分でビルドする必要があります。SBT では非常に簡単です)。

または、同様に機能する Play で NORM を使用します。どちらも私のカップ・オ・ティーではありません...

于 2012-01-17T21:08:21.447 に答える