package com.brightgenerous.injection.jdbc; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.sql.Connection; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Transactional { enum Isolation { DEFAULT(null), NONE(Connection.TRANSACTION_NONE), READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED), READ_UNCOMMITTED(Connection.TRANSACTION_READ_UNCOMMITTED), REPEATABLE_READ(Connection.TRANSACTION_REPEATABLE_READ), SERIALIZABLE(Connection.TRANSACTION_SERIALIZABLE); private final Integer level; private Isolation(Integer level) { this.level = level; } public Integer getLevel() { return level; } } Isolation isolation() default Isolation.DEFAULT; boolean force() default false; Class<? extends Throwable> rethrowExceptionsAs() default Exception.class; String exceptionMessage() default ""; boolean rollbackOnly() default false; }