Class JdbiBundle
- All Implemented Interfaces:
ru.vyarus.dropwizard.guice.module.installer.bundle.GuiceyBundle
JdbiBundle.forDatabase((env, conf) -> conf.getDatabase()).
Bundle introduce unit of work concept for JDBI. All actions must perform inside unit of work. You may use
InTransaction annotation to annotate classes or methods in order to wrap logic with unit of work
(and actual transaction). Annotations could be nested: in this case upper most annotation declares transaction and
nested are ignored (logic executed inside upper transaction). To declare unit of work without transaction
use UnitManager.
To manually declare transaction use TransactionTemplate bean.
Custom installations:
- Classes annotated with
JdbiRepositoryare installed as guice beans, but provides usual functionality as JDBI sql proxies (just no need to always combine them). - Classes implementing
RowMapperare registered automatically.
Only one bundle instance will be actually used (in case of multiple registrations).
- Since:
- 31.08.2018
- See Also:
-
for manual unit of work definitionfor manual work with transactionsfor sql object customization details
-
Method Summary
Modifier and TypeMethodDescriptionstatic <C extends io.dropwizard.core.Configuration>
JdbiBundleforDatabase(ConfigAwareProvider<io.dropwizard.db.PooledDataSourceFactory, C> db) Builds bundle, by using only database factory from configuration.static <C extends io.dropwizard.core.Configuration>
JdbiBundleforDbi(ConfigAwareProvider<org.jdbi.v3.core.Jdbi, C> dbi) Builds bundle for custom JDBI instance.voidinitialize(ru.vyarus.dropwizard.guice.module.installer.bundle.GuiceyBootstrap bootstrap) voidrun(ru.vyarus.dropwizard.guice.module.installer.bundle.GuiceyEnvironment environment) withConfig(Consumer<org.jdbi.v3.core.Jdbi> configurer) Manual jdbi instance configuration.By default, repository beans (annotated withJdbiRepository) are initialized on first method call.withPlugins(org.jdbi.v3.core.spi.JdbiPlugin... plugins) Note that dropwizard registers some plugins (sql objects, guava and jodatime).final JdbiBundlewithTxAnnotations(Class<? extends Annotation>... txAnnotations) By default,InTransactionannotation registered.Methods inherited from class ru.vyarus.dropwizard.guice.module.context.unique.item.UniqueGuiceyBundle
equals, hashCode
-
Method Details
-
withTxAnnotations
@SafeVarargs public final JdbiBundle withTxAnnotations(Class<? extends Annotation>... txAnnotations) By default,InTransactionannotation registered. If you need to use different or more annotations provide all of them. Note, that you will need to provideInTransactiontoo if you want to use it too, otherwise it would not be supported.- Parameters:
txAnnotations- annotations to use as transaction annotations- Returns:
- bundle instance for chained calls
-
withPlugins
Note that dropwizard registers some plugins (sql objects, guava and jodatime).- Parameters:
plugins- extra jdbi plugins to register- Returns:
- bundle instance for chained calls
-
withConfig
Manual jdbi instance configuration. Configuration will be called just after jdbi object creation (on run dropwizard phase), but before guice injector creation.- Parameters:
configurer- configuration action- Returns:
- bundle instance for chained calls
-
withEagerInitialization
By default, repository beans (annotated withJdbiRepository) are initialized on first method call. Lazy initialization is required to properly add all registered jdbi extensions. Also, this slightly speed up startup.This option will enable eager repositories initialization after application startup. It may be important if execution time of first method call is important (e.g. due to some metrics).
- Returns:
- bundle instance for chained calls
-
initialize
public void initialize(ru.vyarus.dropwizard.guice.module.installer.bundle.GuiceyBootstrap bootstrap) -
run
public void run(ru.vyarus.dropwizard.guice.module.installer.bundle.GuiceyEnvironment environment) -
forDbi
public static <C extends io.dropwizard.core.Configuration> JdbiBundle forDbi(ConfigAwareProvider<org.jdbi.v3.core.Jdbi, C> dbi) Builds bundle for custom JDBI instance.- Type Parameters:
C- configuration type- Parameters:
dbi- JDBI instance provider- Returns:
- bundle instance
-
forDatabase
public static <C extends io.dropwizard.core.Configuration> JdbiBundle forDatabase(ConfigAwareProvider<io.dropwizard.db.PooledDataSourceFactory, C> db) Builds bundle, by using only database factory from configuration.- Type Parameters:
C- configuration type- Parameters:
db- database configuration provider- Returns:
- bundle instance
-