Skip to content

cssxsh/mirai-hibernate-plugin

Repository files navigation

Mirai Hibernate 前置插件

Mirai Console 的前置插件,用于 Hibernate ORM 框架的初始化

maven-central Database Test Codacy Badge

插件自带聊天记录器 MiraiHibernateRecorder,
会记录 群聊/私聊 的内容到数据库方便其他插件使用,默认是 h2database 数据库(since 2.2.0+)

每个插件都有应有独立的数据库配置在其配置文件目录 config/.../hibernate.properties
例如,聊天记录器数据库配置在 config/xyz.cssxsh.mirai.plugin.mirai-hibernate-plugin/hibernate.properties

数据库支持

本插件打包了以下版本的数据库驱动和连接池

需要其他数据库驱动或连接池支持,请添加 plugin-shared-libraries 依赖,有2种方法

  1. Jar包 放到 plugin-shared-libraries 目录中一同被 mirai-console 加载

  2. plugin-shared-libraries/libraries.txt 中添加 maven 引用,
    例如 com.oracle.database.jdbc:ojdbc11:21.8.0.0

在 Mirai Console Plugin 项目中引用

repositories {
    mavenCentral()
}

dependencies {
    compileOnly("xyz.cssxsh.mirai:mirai-hibernate-plugin:${version}")
}

// hibernate 6 和 HikariCP 5 需要 jdk11
mirai {
    jvmTarget = JavaVersion.VERSION_11
}

在 Mirai Core Jvm 项目中引用

repositories {
    mavenCentral()
}

dependencies {
    implementation("xyz.cssxsh.mirai:mirai-hibernate-plugin:${version}")
}

需要手动对 xyz.cssxsh.mirai.hibernate.factory 进行初始化,和对 MiraiHibernateRecorder 进行注册

Maven 项目请根据上面的 maven-central 指向的链接查询相关配置方法

在 mirai-api-http 中引用

使用本插件作为 mirai-api-http 的消息源需要额外的拓展插件 https://github.com/cssxsh/mirai-hibernate-http

一些方法和类说明

  • MiraiHibernateConfiguration 配置的,对应于 JvmPluginSessionFactory
    默认将会读取(生成)在 config 目录下的 hibernate.properties 作为配置文件
    并且自动扫描加载当前插件的 entry 类包中被 jakarta.persistence.Entity 标记的实体类

  • MiraiHibernateRecorder
    是本插件自带的消息记录器,通过对 MessageEventMessagePostSendEvent 记录,保存消息历史到数据库

  • CriteriaBuilder.rand
    MiraiHibernateConfiguration 中会对 Sqlite / PostgreSql 的 random 进行别名注册为 rand 统一SQL语句的中的随机函数名

  • CriteriaBuilder.dice
    MiraiHibernateConfiguration 中会注册名为 dice 的宏,用于随机取行

示例代码

安装

MCL 指令安装

请确认 mcl.jar 的版本是 2.1.0+
./mcl --update-package xyz.cssxsh.mirai:mirai-hibernate-plugin --channel maven-stable --type plugins

手动安装

  1. Releases 或者 Maven 下载 mirai2.jar
  2. 将其放入 plugins 文件夹中

聊天数据迁移

  1. 将原 config/xyz.cssxsh.mirai.plugin.mirai-hibernate-plugin/hibernate.properties 改名备份为 hibernate.backup.properties
  2. 按照 example 中的例子写一份新的 hibernate.properties
  3. 重启 mirai-console

afdian