SmartAccess 快速开始
下面以 Hibernate 6 和 H2 为例。SmartAccess 会扫描 Access 接口并生成实现,再由 Rain 容器注入。
添加依赖
kotlin
repositories {
mavenCentral()
maven("https://maven.cnb.cool/IceCream/maven/-/packages/")
}
dependencies {
implementation("com.IceCreamQAQ.SmartAccess:hibernate6:1.0.0-DEV11")
runtimeOnly("com.h2database:h2:<version>")
}定义实体与 Access
kotlin
import jakarta.persistence.*
import smartaccess.jpa.access.JpaAccess
@Entity
data class Student(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Int? = null,
var name: String = "",
var age: Int = 0,
)
interface StudentAccess : JpaAccess<Student, Int> {
fun findByName(name: String): List<Student>
fun deleteByName(name: String): Int
}注入并使用
kotlin
@EventListener
class StartupListener(
private val studentAccess: StudentAccess,
) {
@SubscribeEvent
fun AppStatusEvent.AppStarted.load() {
println(studentAccess.findByName("Alice"))
}
}构造器注入优先于 lateinit 字段注入,依赖关系更明确,也更容易测试。
配置数据库
src/main/resources/conf/project.properties:
properties
rain.scanPackages=com.example
db.provider=smartaccess.hibernate.HibernateService
db.driver=org.h2.Driver
db.url=jdbc:h2:./db/app
db.username=sa
db.password=
db.dialect=org.hibernate.dialect.H2DialectHibernate 原生选项可以放入 src/main/resources/hibernate.properties,例如:
properties
hibernate.show_sql=true
hibernate.use_sql_comments=true启动应用
使用 Rain 的 FullStackApplicationLauncher.launch() 启动。应用关闭时,SmartAccess 的数据库服务会随 Rain 生命周期释放资源。