gpt4 book ai didi

java - 创建一个线程来运行 Postgres 存储函数

转载 作者:行者123 更新时间:2023-12-01 12:15:24 26 4
gpt4 key购买 nike

我有一个存储函数,可以从数据库中删除某些内容,但由于这可能是一项很长的任务,所以我想创建一个线程来执行这个函数,并让用户继续做他正在做的事情。

目前我有以下内容:

DAO:

    @Override
@Transactional
public void deleteAll()
{
Session session = (Session) entityManager.getDelegate();
session.doWork(new Work()
{
@Override
public void execute(Connection connection) throws SQLException
{
try
{
// stored function is currently named delete_function()
CallableStatement deleteAll= connection.prepareCall("{call delete_function()}");
purgeArchived.execute();
purgeArchived.close();
}
catch (SQLException exception)
{
LOGGER.warn(exception);
}
}
});
}

恐怕当我在其余服务中调用 getDao.deleteAll() 时,如果数据库有很多要删除的内容,这将工作很长时间。如何创建一个线程来做同样的事情?或者这会创建一个线程并执行该函数?

最佳答案

是的,您需要为此创建自己的线程。也许最简单的方法是将当前 deleteAll() 方法的整个主体复制到扩展 Thread 的新类的 run() 方法。假设您已调用该类 DeleteAllThread,那么您可以将上面的方法替换为

@Override
public void deleteAll() {
new DeleteAllThread().start();
}

关于java - 创建一个线程来运行 Postgres 存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27048905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com