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