Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对多个查询重用数据库会话?_Java_Database_Scala_Playframework_Slick - Fatal编程技术网

Java 对多个查询重用数据库会话?

Java 对多个查询重用数据库会话?,java,database,scala,playframework,slick,Java,Database,Scala,Playframework,Slick,我正在考虑以下哪种方法更好。 要将会话重新用于更大的作用域,还是使用更小的作用域 下面两个例子来说明这些区别 示例1小范围: def thumbnail(id: Int) = SecuredAction { implicit request => DB.withSession { implicit session => Models.get(id) } match { case None => NotFound("The requested model

我正在考虑以下哪种方法更好。 要将会话重新用于更大的作用域,还是使用更小的作用域

下面两个例子来说明这些区别

示例1小范围:

  def thumbnail(id: Int) = SecuredAction { implicit request =>
    DB.withSession { implicit session => Models.get(id) } match {
      case None => NotFound("The requested model is either not in the db or you lack access to it.")
      case Some(model) => {
        Ok(views.html.model.thumbnail(model, DB.withSession { implicit session => Tags.tags(model) }))
      }
    }
  }
示例2大范围:

def thumbnail(id: Int) = SecuredAction { implicit request =>
    DB.withSession { implicit session =>
      Models.get(id) match {
        case None => NotFound("The requested model is either not in the db or you lack access to it.")
        case Some(model) => {
          Ok(views.html.model.thumbnail(model, Tags.tags(model)))
        }
      }
    }
  }

你觉得怎么样?

第二个避免了任何重复,所以我会投第二个的票

您试图使用第一个解决方案使代码更易于阅读,但实际上,它更难分析

事实上,我们在scala中并不经常看到这种模式:

{...} match { ...  //brackets just before matching

第二种避免任何重复,所以我会投第二种票

您试图使用第一个解决方案使代码更易于阅读,但实际上,它更难分析

事实上,我们在scala中并不经常看到这种模式:

{...} match { ...  //brackets just before matching

第二种避免任何重复,所以我会投第二种票

您试图使用第一个解决方案使代码更易于阅读,但实际上,它更难分析

事实上,我们在scala中并不经常看到这种模式:

{...} match { ...  //brackets just before matching

第二种避免任何重复,所以我会投第二种票

您试图使用第一个解决方案使代码更易于阅读,但实际上,它更难分析

事实上,我们在scala中并不经常看到这种模式:

{...} match { ...  //brackets just before matching
我会(并且通常会)使用第二种方法,我不知道Slick打开新会话(通常是数据库)的工作量有多大,但为什么要放弃简单的性能改进呢

从工作流的角度来看,仅仅打开一个会话,将其用于一个小操作,关闭它,然后立即打开另一个会话是没有意义的,唯一想到的是,您可能会有一个非常密集的数据库操作,并且会话可能持续时间不够(取决于您的DBMS),也许只有到那时,使用新的才有意义

还要注意的是,第一种方法比第二种方法可读性差得多,我想知道为什么第一种方法是由谁实现的

不管怎么说,只要我的2美分,我就会把它作为评论发布,但它太长了。

我会(而且通常会)使用第二种方法,我不知道Slick打开一个新会话(通常是数据库)有多重,但为什么要放弃简单的性能改进呢

从工作流的角度来看,仅仅打开一个会话,将其用于一个小操作,关闭它,然后立即打开另一个会话是没有意义的,唯一想到的是,您可能会有一个非常密集的数据库操作,并且会话可能持续时间不够(取决于您的DBMS),也许只有到那时,使用新的才有意义

还要注意的是,第一种方法比第二种方法可读性差得多,我想知道为什么第一种方法是由谁实现的

不管怎么说,只要我的2美分,我就会把它作为评论发布,但它太长了。

我会(而且通常会)使用第二种方法,我不知道Slick打开一个新会话(通常是数据库)有多重,但为什么要放弃简单的性能改进呢

从工作流的角度来看,仅仅打开一个会话,将其用于一个小操作,关闭它,然后立即打开另一个会话是没有意义的,唯一想到的是,您可能会有一个非常密集的数据库操作,并且会话可能持续时间不够(取决于您的DBMS),也许只有到那时,使用新的才有意义

还要注意的是,第一种方法比第二种方法可读性差得多,我想知道为什么第一种方法是由谁实现的

不管怎么说,只要我的2美分,我就会把它作为评论发布,但它太长了。

我会(而且通常会)使用第二种方法,我不知道Slick打开一个新会话(通常是数据库)有多重,但为什么要放弃简单的性能改进呢

从工作流的角度来看,仅仅打开一个会话,将其用于一个小操作,关闭它,然后立即打开另一个会话是没有意义的,唯一想到的是,您可能会有一个非常密集的数据库操作,并且会话可能持续时间不够(取决于您的DBMS),也许只有到那时,使用新的才有意义

还要注意的是,第一种方法比第二种方法可读性差得多,我想知道为什么第一种方法是由谁实现的


不管怎么说,只要我的2美分,我会把它作为评论发布,但它太长了。

谢谢你的回答,你能澄清一下这是什么意思吗?“我开始想知道为什么是谁实现了第二种方法以这种方式。”如果我正确理解了这句话,那么我自己实现了这两种方法。对不起,我的意思是,作为一名外部阅读您的代码的人,我会认为您有会话问题(例如会话过期)而且
get
操作非常密集,我只是在想别人在读你的代码。谢谢你的解释,现在我明白你的意思了。谢谢你的回答,你能解释一下这意味着什么吗?“我开始想知道为什么是谁实现了第二种方法以这种方式。”如果我正确理解了这句话,那么我自己实现了这两种方法。对不起,我的意思是,作为一名外部阅读您的代码的人,我会认为您有会话问题(例如会话过期)而且
get
操作非常密集,我只是在想别人在读你的代码。谢谢你的解释,现在我明白你的意思了。谢谢你的回答,你能解释一下这意味着什么吗?“我开始想为什么是谁实施了第二种方法以这种方式。”如果我正确理解了这句话,那么我自己实施了这两种方法。对不起,我的意思是作为一个外部原因