小编a_g*_*man的帖子

为什么静态块中的代码会执行多次?

我在Spring boot中创建了一个类来建立一个全局的javers对象,可供所有类使用。这是我的代码。

@Component
public class JaversInstance {

    public static final Javers javers;
    static
    {

        ConnectionProvider connectionProvider = new ConnectionProvider() {
            @Override
            public Connection getConnection() throws SQLException {
                String url = "any_url";
                Properties props = new Properties();
                props.setProperty("user", "test");
                props.setProperty("password", "test");
                DriverManager.getConnection(url, props);
                System.out.println("CONNECTION PROVIDER invoked");
                return DriverManager.getConnection(url, props);
            }
        };

        JaversSqlRepository sqlRepository = SqlRepositoryBuilder
                .sqlRepository()
                .withConnectionProvider(connectionProvider)
                .withDialect(DialectName.MYSQL).build();
        System.out.println("JAVERS instance creation");
        javers = JaversBuilder.javers().registerJaversRepository(sqlRepository).build();
    }

    private JaversInstance() {

    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

JAVERS instance creation
CONNECTION PROVIDER invoked
CONNECTION PROVIDER invoked
CONNECTION …
Run Code Online (Sandbox Code Playgroud)

java connection object spring-boot javers

5
推荐指数
1
解决办法
302
查看次数

高效的审计方法

我正在尝试为我的 Spring Boot 应用程序实现审计层。到目前为止,我尝试了两种方法。

1) 创建了 1 个审计表,其中包含字段 user_name、table_name、column_name、old_value、new_value、uuid、event_type。

每当保存任何更改时,填充审核实体并保存它。

优点:

  • 快的

  • 由于只有 1 个审核表,易于管理

下降:

  • 有时它涉及太多从业务实体到审计实体的映射

  • 必须从数据库获取旧值以填充审计实体

  • 手动创建审核实体
  • 检索可能很痛苦

2)使用javers进行审计

优点:

  • 自动创建和更新审计实体

  • 需要管理的表数量更少

  • 不需要旧值检索

下降:

  • 由于交易规模很大,花费的时间太多

基准

处理具有 20 列(字段)的表(实体)中的 10 行,

使用方法 1 所花费的时间:24328 ms => 24 s

使用方法 2 所花费的时间:311292 ms => 311 s(近 12 倍)


3)没有使用Hibernate envers,因为创建的表数量会很高

考虑到上述优点和缺点,有人可以提出更好的审计想法吗?我们的目标是,

  • 需要管理的表数量更少

  • 更少的响应时间

  • 模块化审计层,自动化程度高于手动程度

每个表中有 10 到 25 列。

java performance audit spring-boot javers

5
推荐指数
1
解决办法
4167
查看次数

标签 统计

java ×2

javers ×2

spring-boot ×2

audit ×1

connection ×1

object ×1

performance ×1