KaumeiTx.java
/*
* SPDX-FileCopyrightText: 2026 kaumei.io
* SPDX-License-Identifier: Apache-2.0
*/
package io.kaumei.jdbc.annotation;
import java.lang.annotation.*;
/**
* Declares transaction handling for a type or method.
*/
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface KaumeiTx {
/**
* Transaction type. Defaults to {@link Type#MANDATORY} so transaction boundaries must be
* declared explicitly.
*/
Type value() default Type.MANDATORY;
/**
* Required transaction isolation.
*/
Isolation isolation() default Isolation.DEFAULT;
/**
* Required read-only mode.
*/
ReadOnly readOnly() default ReadOnly.DEFAULT;
/**
* Exception types that require rollback.
*/
Class<? extends Throwable>[] rollbackOn() default {};
/**
* Exception types that do not require rollback.
*/
Class<? extends Throwable>[] dontRollbackOn() default {};
enum Type {
REQUIRED,
REQUIRES_NEW,
MANDATORY,
SUPPORTS,
NOT_SUPPORTED,
NEVER
}
enum Isolation {
DEFAULT,
READ_UNCOMMITTED,
READ_COMMITTED,
REPEATABLE_READ,
SERIALIZABLE
}
enum ReadOnly {
DEFAULT,
READ_ONLY,
READ_WRITE
}
}