javer的表結(jié)構(gòu)設(shè)計(jì)

javers設(shè)計(jì)了幾張表,這里簡(jiǎn)單介紹下

jv_snapshot

主要用來(lái)存儲(chǔ)對(duì)象的每次變更操作以及變更的屬性值。

-- ----------------------------
--  Table structure for jv_snapshot
-- ----------------------------
DROP TABLE IF EXISTS "public"."jv_snapshot";
CREATE TABLE "public"."jv_snapshot" (
    "snapshot_pk" int8 NOT NULL,
    "type" varchar(200) COLLATE "default",
    "version" int8,
    "state" text COLLATE "default",
    "changed_properties" text COLLATE "default",
    "managed_type" varchar(200) COLLATE "default",
    "global_id_fk" int8,
    "commit_fk" int8
)
WITH (OIDS=FALSE);
ALTER TABLE "public"."jv_snapshot" OWNER TO "postgres";

-- ----------------------------
--  Primary key structure for table jv_snapshot
-- ----------------------------
ALTER TABLE "public"."jv_snapshot" ADD PRIMARY KEY ("snapshot_pk") NOT DEFERRABLE INITIALLY IMMEDIATE;

-- ----------------------------
--  Indexes structure for table jv_snapshot
-- ----------------------------
CREATE INDEX  "jv_snapshot_commit_fk_idx" ON "public"."jv_snapshot" USING btree(commit_fk "pg_catalog"."int8_ops" ASC NULLS LAST);
CREATE INDEX  "jv_snapshot_global_id_fk_idx" ON "public"."jv_snapshot" USING btree(global_id_fk "pg_catalog"."int8_ops" ASC NULLS LAST);

-- ----------------------------
--  Foreign keys structure for table jv_snapshot
-- ----------------------------
ALTER TABLE "public"."jv_snapshot" ADD CONSTRAINT "jv_snapshot_commit_fk" FOREIGN KEY ("commit_fk") REFERENCES "public"."jv_commit" ("commit_pk") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE "public"."jv_snapshot" ADD CONSTRAINT "jv_snapshot_global_id_fk" FOREIGN KEY ("global_id_fk") REFERENCES "public"."jv_global_id" ("global_id_pk") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;

jv_global_id

存儲(chǔ)了每次變更的id

-- ----------------------------
--  Table structure for jv_global_id
-- ----------------------------
DROP TABLE IF EXISTS "public"."jv_global_id";
CREATE TABLE "public"."jv_global_id" (
    "global_id_pk" int8 NOT NULL,
    "local_id" varchar(200) COLLATE "default",
    "fragment" varchar(200) COLLATE "default",
    "type_name" varchar(200) COLLATE "default",
    "owner_id_fk" int8
)
WITH (OIDS=FALSE);
ALTER TABLE "public"."jv_global_id" OWNER TO "postgres";

-- ----------------------------
--  Primary key structure for table jv_global_id
-- ----------------------------
ALTER TABLE "public"."jv_global_id" ADD PRIMARY KEY ("global_id_pk") NOT DEFERRABLE INITIALLY IMMEDIATE;

-- ----------------------------
--  Indexes structure for table jv_global_id
-- ----------------------------
CREATE INDEX  "jv_global_id_local_id_idx" ON "public"."jv_global_id" USING btree(local_id COLLATE "default" "pg_catalog"."text_ops" ASC NULLS LAST);

-- ----------------------------
--  Foreign keys structure for table jv_global_id
-- ----------------------------
ALTER TABLE "public"."jv_global_id" ADD CONSTRAINT "jv_global_id_owner_id_fk" FOREIGN KEY ("owner_id_fk") REFERENCES "public"."jv_global_id" ("global_id_pk") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;

jv_commit

存儲(chǔ)了每次變更的時(shí)間、變更人

-- ----------------------------
--  Table structure for jv_commit
-- ----------------------------
DROP TABLE IF EXISTS "public"."jv_commit";
CREATE TABLE "public"."jv_commit" (
    "commit_pk" int8 NOT NULL,
    "author" varchar(200) COLLATE "default",
    "commit_date" timestamp(6) NULL,
    "commit_id" numeric(22,2)
)
WITH (OIDS=FALSE);
ALTER TABLE "public"."jv_commit" OWNER TO "postgres";

-- ----------------------------
--  Primary key structure for table jv_commit
-- ----------------------------
ALTER TABLE "public"."jv_commit" ADD PRIMARY KEY ("commit_pk") NOT DEFERRABLE INITIALLY IMMEDIATE;

-- ----------------------------
--  Indexes structure for table jv_commit
-- ----------------------------
CREATE INDEX  "jv_commit_commit_id_idx" ON "public"."jv_commit" USING btree(commit_id "pg_catalog"."numeric_ops" ASC NULLS LAST);

支持自動(dòng)從SpringSecurity獲取auditor

public class SpringSecurityAuthorProvider implements AuthorProvider {
    public SpringSecurityAuthorProvider() {
    }

    public String provide() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        return auth == null?"unauthenticated":auth.getName();
    }
}

也可以自定義,比如

@Bean
    public AuthorProvider authorProvider() {
        return new MockAuthorProvider();
    }

jv_commit_property

用來(lái)存儲(chǔ)額外的信息,比如存儲(chǔ)了用戶id,順帶存一下用戶名等。

-- ----------------------------
--  Table structure for jv_commit_property
-- ----------------------------
DROP TABLE IF EXISTS "public"."jv_commit_property";
CREATE TABLE "public"."jv_commit_property" (
    "property_name" varchar(200) NOT NULL COLLATE "default",
    "property_value" varchar(600) COLLATE "default",
    "commit_fk" int8 NOT NULL
)
WITH (OIDS=FALSE);
ALTER TABLE "public"."jv_commit_property" OWNER TO "postgres";

-- ----------------------------
--  Primary key structure for table jv_commit_property
-- ----------------------------
ALTER TABLE "public"."jv_commit_property" ADD PRIMARY KEY ("commit_fk", "property_name") NOT DEFERRABLE INITIALLY IMMEDIATE;

-- ----------------------------
--  Indexes structure for table jv_commit_property
-- ----------------------------
CREATE INDEX  "jv_commit_property_commit_fk_idx" ON "public"."jv_commit_property" USING btree(commit_fk "pg_catalog"."int8_ops" ASC NULLS LAST);
CREATE INDEX  "jv_commit_property_property_name_property_value_idx" ON "public"."jv_commit_property" USING btree(property_name COLLATE "default" "pg_catalog"."text_ops" ASC NULLS LAST, property_value COLLATE "default" "pg_catalog"."text_ops" ASC NULLS LAST);

-- ----------------------------
--  Foreign keys structure for table jv_commit_property
-- ----------------------------
ALTER TABLE "public"."jv_commit_property" ADD CONSTRAINT "jv_commit_property_commit_fk" FOREIGN KEY ("commit_fk") REFERENCES "public"."jv_commit" ("commit_pk") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;

可以這樣自定義

@Bean
    public CommitPropertiesProvider commitPropertiesProvider() {
        return new CommitPropertiesProvider() {
            @Override
            public Map<String, String> provide() {
                return ImmutableMap.of("key", "ok");
            }
        };
    }

doc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,881評(píng)論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評(píng)論 6 342
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,010評(píng)論 0 11
  • asdfasdf
    birkhoff001閱讀 168評(píng)論 0 0

友情鏈接更多精彩內(nèi)容