jjzjj

java - EntityManager.flush() 在 Java Web 服务中提交事务

编辑:感谢大家的回答,但问题出在我的数据源配置上,它实际上处于自动提交模式。参见myanswerbelow了解详情。EntityManager.flush()的Javadoc方法并在Google中搜索它似乎表明flush方法只将挂起的语句发送到数据库并且不提交事务。但是我创建的一个简单的测试Web服务(在Java7、Oracle11gR2、JBoss7.1中,Web服务被打包为一个jar文件)似乎表明并非如此:这是表创建脚本:CREATETABLEtest(idINTEGERNOTNULL,nameVARCHAR2(20),CONSTRAINTtest_pkPRIMARYKEY("ID

java - 使用 Apache Lucene 删除磁盘中的所有索引数据/文件?

如何使用ApacheLucene刷新/删除/删除磁盘中的所有索引文件/数据。到目前为止这是我的代码,但我仍然无法删除索引文件。请帮帮我...测试:publicclassTest{privatestaticfinalStringINDEX_DIR="/home/amila/Lucene/REST/indexing";publicstaticvoidmain(String[]args){try{ContentIndexercontentIndexer=newContentIndexer(INDEX_DIR);contentIndexer.flushDisk();System.out.pri

java - 我创建了一个带有自动刷新功能的 PrintWriter;为什么它不自动冲洗?

我的客户端是一个网络浏览器,并使用这个url向我的服务器发送请求:http://localhost这是服务器端代码。问题出在ServingThread类的run方法上。classServingThreadimplementsRunnable{privateSocketsocket;publicServingThread(Socketsocket){this.socket=socket;System.out.println("Receivesanewbrowserrequestfrom"+socket+"\n\n");}publicvoidrun(){PrintWriterout=nul

java - getHibernateTemplate().flush() 和 getSession().flush() 有什么区别

我正在使用Hibernate3.2.6。我正面临异常(exception)情况savethetransientinstancebeforeflushing在我的代码中,有时我们在一个事务中使用getSession().flush(),有时我们使用getHibernateTemplate().flush()。你能告诉我这两者有什么区别吗? 最佳答案 HibernateTemplate是不推荐使用的Spring代码,从Spring移动到注释作为事务管理的首选方法之前的日子。它不是Hibernate本身的一部分。模板代码抽象出创建、提交和

java - 使用volatile和synchronized时flushed或者publish到各个线程的内存范围是多少?

此问题仅针对内存可见性,而不是happens-before和happens-after。Java中有四种方法可以保证一个线程中的内存更改对另一个线程可见。(引用http://gee.cs.oswego.edu/dl/cpj/jmm.html)写入线程释放同步锁,读取线程随后获取同一个同步锁。如果一个字段被声明为volatile,写入它的任何值都会被写入线程刷新并在写入线程执行任何进一步的内存操作之前变得可见(即,为了手头的目的它被立即刷新)。线程第一次访问对象的字段时,它会看到该字段的初始值或其他线程写入后的值。当线程终止时,所有写入的变量都会刷新到主内存。根据JavaConcurre

java - JPA 中 flush 的确切目的是什么

一些令人困惑的解释:冲洗();刷新是将底层持久存储与内存中保存的持久状态同步的过程。它会更新或插入正在运行的事务中的表,但它可能不会提交这些更改。如果更改无论如何都只会在提交后持久保存在数据库中,那么为什么要在代码中间进行刷新。并且在运行刷新之后,如果对托管对象进行了任何更改,那么将抛出异常,或者这些将被同步,然后将被保留。如果他们得到同步,那么为什么首先要刷新。 最佳答案 理论上,您(作为JPA的用户)永远不应该(或在极少数情况下)调用flush()。Flushingistheprocessofsynchronizingtheun

java - 为什么我们必须在扩展的 PersistenceContext 中手动 flush() EntityManager?

在我们的J2EE应用程序中,我们使用EJB-3有状态bean来允许前端代码创建、修改和保存持久实体(通过JPA-2管理)。看起来像这样:@LocalBean@Stateful@TransactionAttribute(TransactionAttributeType.NEVER)publicclassMyEntityControllerimplementsSerializable{@PersistenceContext(type=PersistenceContextType.EXTENDED)privateEntityManagerem;privateMyEntitycurrent;p

java - 如何刷新 'RandomAccessFile' (java)?

我在java中使用RandomAccessFile:file=newRandomAccessFile(filename,"rw");...file.writeBytes(...);如何确保将此数据刷新到操作系统?没有file.flush()方法。(请注意,我实际上并不希望它被物理写入,我对它被刷新到操作系统感到满意,这样数据将在tomcat崩溃但不一定是意外的服务器断电时幸存下来)。我在Linux上使用tomcat6。 最佳答案 唯一提供.flush()方法的类是那些实际维护自己的缓冲区的类。由于java.io.RandomAcce

java - 在这种情况下是否需要调用 flush() (JPA 接口(interface))?

因为调用flush()来让每个实体从内存持久化到数据库。因此,如果我调用太多不必要的flush(),可能会花费很多时间,因此对于性能来说不是一个好的选择。这是一个我不知道什么时候调用flush()的场景?//OrderandItemhaveBidirectionalRelationshipsOrderord=Neword("myfirstorder");Itemitem=NewItem("tv",10);//...processitemandordobjectem.persist(ord);//emisaninstanceofEntityManagerem.flush();//No.1

c++ - 为什么不编译? (VC++ 2015,#pragma omp flush)

这是一个最小的例子。在VisualC++2015上使用“/openmp”编译。#includevoidmain(){boolfoo=false;#pragmaompflush(foo)std::vectorbar;}我得到:C2146syntaxerror:missing';'beforeidentifier'bar'C2275'std::vector>':illegaluseofthistypeasanexpressionC2065'bar':undeclaredidentifier如果我注释掉#pragma,错误就会消失。如果我将std::vector替换为int,错误就会消失。如