【问题标题】:Does ActiveJDBC have flush?ActiveJDBC 有flush吗?
【发布时间】:2018-05-25 04:11:32
【问题描述】:

我在 Tomcat 8 中运行的 REST 服务器应用程序 (Jersey+ActiveJDBC+Shiro+TomcatJDBC) 中遇到以下问题,并且数据库是 PostgreSQL,它也在 VPS 中运行。

有时在通过 REST 应用程序进行大量/大量 CRUD 活动后,数据库中插入的数据不存在。

注意:我在 ActiveJDBC 中使用插入,因为我有自定义 PK 并且没有使用任何缓存。

例如:通过REST调用total data时是100,直接查数据库时是80。然后如果我重启Tomcat,REST会响应80,这样数据就没有了……

我已经调试了所有潜在的错误(检查了 Tomcat 日志、Postgresql 日志和应用程序日志,还有 VPS)但什么也没找到!插入的数据就像从未插入过一样。

丢失的数据是偶尔发生的,我无法重现它。因此我无法修复错误。

已编辑,之前引用错误)

然后我发现了这个问答: Hibernate not saving Object in the Database

ActiveJDBC 是否有可能出现上述刷新问题,因为像上面的问答一样,它只发生在 PostgreSQL 上。

保存代码:

try(DB db = new DB()){
        db.open(DataSourcePool.getInstance().ds_pooled);

        dbModel dbModel = new dbModel();
        dbModel.setPojoModel(PojoModel);

        CheckRulesCreate(dbModel);   // Business Rule Check, throw on Fail

        if (dbModel.insert())
            return Response.status(201).entity(new Outputs("OK",201,"Data saved!")).build();
    }

数据源池:

//Singelton Based On Bill Pugh Singeltom Design
import org.apache.tomcat.jdbc.pool.DataSource;

DataSource ds = new DataSource();

ds.setDriverClassName("org.postgresql.Driver");
ds.setUrl("jdbc:postgresql://localhost/database");
ds.setUsername("blahblah");
ds.setPassword("hisshiss");

ds.setInitialSize(10);
ds.setMaxActive(300);
ds.setMinIdle(2);
ds.setValidationQuery("select 1");
ds.setTestOnBorrow(true);
ds.setRemoveAbandoned(true);
ds.setRemoveAbandonedTimeout(60);
ds.setMaxWait(10000);
ds.setName("DataSourcePool");

【问题讨论】:

    标签: activejdbc


    【解决方案1】:

    ActiveJDBC 不是这样的。如果您遇到这样的问题,您的代码中可能存在错误。

    无论如何,ActiveJDBC 是一个Pass-Through framework:当您调用任何 CRUD 方法时,框架调用底层 JDBC。 Batch operations 是一个例外,但这是故意的。

    如果您的应用运行了一年并且没有出现任何问题,而现在您确实遇到了问题,那么您需要看看发生了什么变化。

    【讨论】:

    • 请注意去年应用程序首次启动时没有任何问题,应用程序按预期工作。然后突然数据消失了(但不是旧数据,只是最近插入的数据介于 1-3 天之间,也不是所有新插入的数据,只是其中一些)
    • 抱歉,您的代码非常晦涩难懂。我添加到答案中。
    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多