在spring中,让带有@transitional注解的方法不调用dao并执行任何sql查询。那么,方法a从不使用db连接吗?
n1bvdmb61#
这个 @Transactional 注解不会导致建立数据库连接,因为它不知道要连接到哪个数据库。请记住,一个程序可能连接到多个数据库。
@Transactional
ubbxdtey2#
在java中何时打开db连接?这确实是一个宽泛的问题。答案取决于应用程序代码配置db连接的方式。一般来说,对于“真正的”应用程序,您不会为每个客户端请求打开一个连接。这将是低效的。相反,当应用程序启动时,名为连接池的组件会创建特定数量的连接,而该数量可以根据实际的客户端请求增加或减少。这些连接存储在内存中。最后,当客户端代码请求连接时,池会提供连接。关于数据库事务,在spring中表示为 @Transactional 是另一回事。它表示在数据库管理系统中执行的工作单元。关于:让带有@transitional注解的方法不调用dao并执行任何sql查询。那么,方法a从不使用db连接吗?即使没有 @Transactional 查询需要连接才能执行。如果代码不执行任何查询,那么它借用到池的连接的风险很小。
s3fp2yjn3#
答案是方法 A 不会使用db连接。假设您使用的是带有spring数据jpa的spring boot。使用默认配置( spring.jpa.open-in-view 设置为true),每个请求都将与一个hibernate会话对象绑定,并且在该对象的帮助下处理数据库访问。如果发生数据库访问,session对象将从连接池借用数据库连接,连接池是在应用程序的启动阶段初始化的,如果没有发生这种情况,session对象将不会执行任何操作。
A
spring.jpa.open-in-view
3条答案
按热度按时间n1bvdmb61#
这个
@Transactional
注解不会导致建立数据库连接,因为它不知道要连接到哪个数据库。请记住,一个程序可能连接到多个数据库。
ubbxdtey2#
在java中何时打开db连接?
这确实是一个宽泛的问题。
答案取决于应用程序代码配置db连接的方式。
一般来说,对于“真正的”应用程序,您不会为每个客户端请求打开一个连接。
这将是低效的。
相反,当应用程序启动时,名为连接池的组件会创建特定数量的连接,而该数量可以根据实际的客户端请求增加或减少。这些连接存储在内存中。最后,当客户端代码请求连接时,池会提供连接。
关于数据库事务,在spring中表示为
@Transactional
是另一回事。它表示在数据库管理系统中执行的工作单元。关于:
让带有@transitional注解的方法不调用dao并执行任何sql查询。那么,方法a从不使用db连接吗?
即使没有
@Transactional
查询需要连接才能执行。如果代码不执行任何查询,那么它借用到池的连接的风险很小。
s3fp2yjn3#
答案是方法
A
不会使用db连接。假设您使用的是带有spring数据jpa的spring boot。
使用默认配置(
spring.jpa.open-in-view
设置为true),每个请求都将与一个hibernate会话对象绑定,并且在该对象的帮助下处理数据库访问。如果发生数据库访问,session对象将从连接池借用数据库连接,连接池是在应用程序的启动阶段初始化的,如果没有发生这种情况,session对象将不会执行任何操作。