だから、そのアイデアは、フレームワークを作成するために生まれました
- データベースの抽象化をより高いレベルに引き上げ、標準のScalaデータ型(プリミティブ、タプル、オプション、コレクションなど)、およびエンティティである標準ケースクラスを通じて提示します。
- 最初のタスクの実行は「クリーン」になります。これは、フレームワークAPIからリレーショナル側の概念を完全に除外することを意味します。テーブル、行、リレーショナル関係はありません。
- 関数型プログラミングの原則を高めます。変更不可能なデータ型のみ、状態を最小化し、
- ユーザーにできる限りのことをすべて実行します。
ご覧のとおり、タスクはすべて妥協することはありませんでしたが、解決されました。 このため、一貫性、シンプルさ、および結果として得られるフレームワークの直感性を実現することができました-これは決して弱い機会ではありません。 定型文は完全に除外されました。 次はコードです。
// . // , . // -, - // , view. case class Artist ( name : String, genres : Set[Genre] ) case class Genre ( name : String ) // . SORM : import sorm._ object Db extends Instance ( entities = Set() + Entity[Artist]() + Entity[Genre](), url = "jdbc:h2:mem:test" ) // : val metal = Db.save( Genre("Metal") ) val rock = Db.save( Genre("Rock") ) Db.save( Artist("Metallica", Set() + metal + rock) ) Db.save( Artist("Dire Straits", Set() + rock) ) // -: // Option[Artist]: val metallica = Db.query[Artist].whereEqual("name", "Metallica").fetchOne() // Stream[Artist]: val rockArtists = Db.query[Artist].whereEqual("genres.item.name", "Rock").fetch()
それは言われている、それはすべての人々です! これは、データベースを作成し、そこからエンティティを保存および取得するプログラムの完全なコードです。 操作性のためにユーザー側で追加のアクションは必要ありません。
インストール情報、ドキュメント、チュートリアル、およびSlick(Scala Query)との比較は、 SORMの公式Webサイトにあります。
ネタバレ:マクロはSORMの将来のバージョンで登場し、APIの簡素化はさらに進んでいます。