Java Hibernate会话管理器,用于同时进行批量插入和获取

Java Hibernate会话管理器,用于同时进行批量插入和获取,java,database,spring,hibernate,session,Java,Database,Spring,Hibernate,Session,我刚开始冬眠。我面临hibernate会话问题。当我尝试插入数据时,我将使用 openSession() 完成更新后,我正在使用session.flush();session.clear();和session.close()。 我不知道如何维护这个。我遇到了死锁异常。在插入的同时,我正在打开另一个会话来获取数据 请帮帮我。。这是我现有的示例代码 @Autowired @Qualifier("messageListenerReportSessionFactory") private Session

我刚开始冬眠。我面临hibernate会话问题。当我尝试插入数据时,我将使用 openSession()

完成更新后,我正在使用session.flush();session.clear();和session.close()。 我不知道如何维护这个。我遇到了死锁异常。在插入的同时,我正在打开另一个会话来获取数据

请帮帮我。。这是我现有的示例代码

@Autowired
@Qualifier("messageListenerReportSessionFactory")
private SessionFactory messageListenerReportSessionFactory;

    Session session = messageListenerReportSessionFactory.openSession();
    if(session != null && session.isOpen()){
        try{
            Transaction tx= session.beginTransaction();
            Query q = session.createQuery("Update "+tableName+" set isUser = ? where id = ?");

            q.setInteger(0, 2);
            q.setLong(1, id);

            q.executeUpdate();
            tx.commit(); tx = null;

        }catch(Exception ex){
            PointelTraceLogger.logger.log(Level.ERROR, "[Audit] Error in updateUser() in com.pointel.application.database.pointelreport.MessageListenerReportDao");
            PointelTraceLogger.writeStackTrace(ex);
        }finally{
            session.clear();
            session.close();
        }
    }

发布一些代码,像您这样处理会话看起来不像您在使用Spring,但至少要尝试解决它。我现在已经发布了示例。请检查这一点。对于初学者,当您出现错误时,您不会回滚事务。不管你是如何使用Spring的,为什么不让Spring为你处理所有这些呢?你能给我一个如何在Spring中处理这些的示例吗。。我们正在与死锁异常进行斗争。请参阅。