如何优化 ActiveJDBC 中的连接管理?
How to optimize connection managment in ActiveJDBC?
我正在使用 ActiveJDBC 作为 Hibernate 的替代品。每当我 运行 应用程序时,我都会使用过滤器来启动连接,但即使应用程序不需要连接,连接也会存在。此外,当我尝试通过 findBySQL 方法 运行 任何查询时,它还会在后台调用获取连接。有没有办法优化与数据库的连接?有时可能会有很多查询,因此每次调用查询时打开和关闭连接可能对性能不利。如果有任何方法或者我在理解中遗漏了一些重要的点,请告诉我。
您可以在 AppControllerConfig
class 中使用细粒度的方法。这是一个商业项目的例子:
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");
我正在使用 ActiveJDBC 作为 Hibernate 的替代品。每当我 运行 应用程序时,我都会使用过滤器来启动连接,但即使应用程序不需要连接,连接也会存在。此外,当我尝试通过 findBySQL 方法 运行 任何查询时,它还会在后台调用获取连接。有没有办法优化与数据库的连接?有时可能会有很多查询,因此每次调用查询时打开和关闭连接可能对性能不利。如果有任何方法或者我在理解中遗漏了一些重要的点,请告诉我。
您可以在 AppControllerConfig
class 中使用细粒度的方法。这是一个商业项目的例子:
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");