玩游戏是不好的做法!用于在控制器内部定义隐式数据库会话以获得较少样板的框架?
object MyController extends Controller {
implicit val session = DB.createSession
}
我不确定Play中控制器的生命周期!有人可以启发我吗?
答案 0 :(得分:2)
我看到控制器内部存在隐式数据库会话的多个问题。
应在需要时创建Db会话,然后在执行查询后立即销毁。原因是每个会话将使用一个到db的连接。您的数据库可以处理x
个连接数。之后,db将停止运行。
现在,由于每个控制器都有一个与数据库的连接,并且这些连接不会被关闭,因此在一定数量的控制器之后,应用程序的性能将大大降低。
由于每个控制器只有一个会话,因此将按顺序执行多个查询,即一个请求控制器将使用该会话执行查询,直到执行查询,对同一个控制器的任何其他请求(即到同一个控制器的任何其他方法)将不得不等待。
您将无法使用任何连接池库,因为您将创建单个会话并在整个过程中使用它。