【问题标题】:How to optimize connection managment in ActiveJDBC?如何优化 ActiveJDBC 中的连接管理?
【发布时间】:2021-02-15 18:24:56
【问题描述】:

我使用 ActiveJDBC 作为 Hibernate 的替代方案。每当我运行应用程序时,我都会使用过滤器来启动连接,但即使应用程序不需要连接,连接也会存在。此外,当我尝试通过 findBySQL 方法运行任何查询时,它还会在后台调用获取连接。有没有办法优化与数据库的连接?有时可能会有很多查询,因此每次调用查询时打开和关闭连接可能对性能不利。如果有任何方法,或者如果我错过了一些重要的理解点,请告诉我。

【问题讨论】:

    标签: javalite activeweb


    【解决方案1】:

    您可以在AppControllerConfig 类中使用细粒度的方法。下面是一个商业项目的例子:

    public class AppControllerConfig extends AbstractControllerConfig {
    
    public void init(AppContext context) {
        add(new CatchAllFilter());
        add(new DefaultApiHeadersFilter());
        add(new DBConnectionFilter("default", true)).to(
                GroupsController.class,
                UsersController.class,
                SubjectsController.class,
                ChaptersController.class,
                LessonsController.class,
                LessonItemsController.class,
                JournalItemsController.class,
                GalleryItemsController.class
        );
      }
    }
    

    如您所见,您可以将DBConnectionFilter 应用于特定控制器。 此示例中的参数将告诉DBConnectionFilter 自动管理默认连接的事务。

    此外,您可以准确指定哪些操作需要这样的数据库连接:

    add(new DBConnectionFilter("events", false)).to(FlowsController.class).forActions("report", "report_details", "webhook_test");
    

    如果您想要相反,您可以将过滤器应用于所有操作,除了一些:

      add(new DBConnectionFilter("default", true).to(TemplatesController.class).excludeActions("thumbnail");
    

    【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多