Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 用Hibernate和PL/SQL实现进度条_Java_Multithreading_Hibernate_Progress Bar - Fatal编程技术网

Java 用Hibernate和PL/SQL实现进度条

Java 用Hibernate和PL/SQL实现进度条,java,multithreading,hibernate,progress-bar,Java,Multithreading,Hibernate,Progress Bar,我正在开发一个PL/SQL存储过程,它将行插入表中。该过程可能会在每次调用中写入上万行,这可能需要几分钟才能完成。我还在开发另一个程序,它可以查询V$SESSION_LONGOPS视图中的信息,例如已经完成了多少工作,大约还有多少时间可以处理,这样我就可以将这些信息用于进度条 在这里,我不清楚甲骨文是怎么做的。我将从一个Java应用程序调用两个过程,这些过程必须同时运行。要实现这种行为,您必须使用两个到Oracle的连接吗?或者一个连接就足够了?如果使用多个连接,Oracle会话中是否会自动发生

我正在开发一个PL/SQL存储过程,它将行插入表中。该过程可能会在每次调用中写入上万行,这可能需要几分钟才能完成。我还在开发另一个程序,它可以查询V$SESSION_LONGOPS视图中的信息,例如已经完成了多少工作,大约还有多少时间可以处理,这样我就可以将这些信息用于进度条

在这里,我不清楚甲骨文是怎么做的。我将从一个Java应用程序调用两个过程,这些过程必须同时运行。要实现这种行为,您必须使用两个到Oracle的连接吗?或者一个连接就足够了?如果使用多个连接,Oracle会话中是否会自动发生多线程

我正在使用Hibernate连接到数据库。我也有一些关于申请的问题。如果我从两个线程向数据库发送两个查询,Hibernate是否使用其连接池中的两个连接来发送查询?第二个查询(将由进度条使用)将在第一个查询(执行插入)仍在执行时重复运行


提前感谢。

Hibernate会话不是线程安全的,因此每个线程都必须有自己的会话。每个会话使用一个JDBC连接,因此两个会话都将从池中获得不同的JDBC连接


当然,Oracle允许使用两个连接并发访问数据库,否则每个应用程序都会有严重的性能问题

谢谢你,JB。我使用Spring将Hibernate实体管理器注入DAO。我认为Spring将使用实体管理器的线程安全版本。我必须回顾Spring产生实体经理的方式。我想它不应该是单例的,Spring确实提供了一个线程安全的实体管理器版本。为什么不呢?真的吗?在这种情况下,如果我使用Spring注入实体管理器,我将重用连接,对吗?如果您配置了连接池,是的。那又怎样?再次谢谢你。我想我所有的问题都有答案了。我目前的配置足以满足我的需要。我只是没时间弄清楚引擎盖下是怎么工作的。