2017-10-10 8 views
0

内部的には、Play Frameworkはボトムアップから非同期です。 Playはすべてのリクエストを非同期で非ブロッキングな方法で処理します。Play FrameworkとPostgreSQLへの非ブロックリクエスト

PostgreSQLへの非ブロックリクエストの作成方法は? Postgresのにアクセスしているときに瞬間

@Singleton 
class Application @Inject()(usersRepossitory: UsersRepository, 
          cc: ControllerComponents) extends AbstractController(cc) { 

    def index = Action { 
    Ok(usersRepository.list().map(_.id).mkString(",")) 
    } 
} 

case class User(id: Long) 

@Singleton 
class UsersRepository @Inject()(dbapi: DBApi) { 

    private val db = dbapi.database("default") 

    val parser: RowParser[User] = Macro.namedParser[User] 

    def list: List[User] = db.withConnection { implicit connection => 
    val result: List[User] = SQL"SELECT id FROM users".as(parser.*) 
    result 
    } 
} 

答えて

0

あなたが正しいの

コードは、プレイは、ブロッキングAPIを使用しています。 Mauricioによって書かれたこの非同期driverをチェックしてください。
また、クエリを構築するための素晴らしいDSL言語を持っているquill(Mauricio非同期ドライバの上に構築されています)をチェックすることができます。

関連する問題