Class Database


  • public class Database
    extends Object
    Manages interactions with the database.
    • Constructor Detail

      • Database

        public Database()
    • Method Detail

      • configure

        public void configure​(Set<String> resourceNames)
        Initializes the database.
        Parameters:
        resourceNames - the name of the mapping resources to include in the configuration
      • findByID

        public <T,​K extends Serializable> reactor.core.publisher.Mono<T> findByID​(Class<T> entityClass,
                                                                                        K key)
        Allows to find a database entity by its ID.
        Type Parameters:
        T - The entity type
        K - the ID type
        Parameters:
        entityClass - class of the entity
        key - the ID
        Returns:
        a Mono emitting the entity, if found
      • query

        public <T> reactor.core.publisher.Flux<T> query​(Class<T> entityClass,
                                                        String query,
                                                        Object... params)
        Makes a simple query to the database.
        Type Parameters:
        T - the entity type
        Parameters:
        entityClass - the entity type to fetch
        query - the HQL query
        params - the query params
        Returns:
        a Flux emitting the results of the query
      • save

        public reactor.core.publisher.Mono<Void> save​(Object obj)
        Saves an object in database
        Parameters:
        obj - the object to save
        Returns:
        a Mono that completes when it has saved
      • delete

        public reactor.core.publisher.Mono<Void> delete​(Object obj)
        Deletes an object from database
        Parameters:
        obj - the object to save
        Returns:
        a Mono that completes when it has deleted
      • performEmptyTransaction

        public reactor.core.publisher.Mono<Void> performEmptyTransaction​(Consumer<org.hibernate.Session> txConsumer)
        Allows to perform more complex actions with the database, by having full control on the current transaction. This method does not return a value. If you need to perform a transaction that returns a value upon completion, the variant performTransaction(Function) is preferred.
        Parameters:
        txConsumer - the transaction consuming a Session object
        Returns:
        a Mono completing when the transaction terminates successfully
      • performTransaction

        public <V> reactor.core.publisher.Mono<V> performTransaction​(Function<org.hibernate.Session,​V> txFunction)
        Allows to perform more complex actions with the database, by having full control on the current transaction. This method can return a value upon completion. If you don't need a return value for the transaction, the variant performEmptyTransaction(Consumer) is preferred.
        Type Parameters:
        V - the type of the returned value
        Parameters:
        txFunction - the transaction accepting a Session object and returning a value
        Returns:
        a Mono completing when the transaction terminates successfully and emitting a value.
      • performTransactionWhen

        public <V> reactor.core.publisher.Flux<V> performTransactionWhen​(Function<org.hibernate.Session,​org.reactivestreams.Publisher<V>> txAsyncFunction)
        Allows to manipulate a Session in an asynchronous context. The session provides a Publisher which completion indicates that the transaction can be committed and the session closed.
        Type Parameters:
        V - the type of value that the transaction may produce
        Parameters:
        txAsyncFunction - a function that manipulates a Session and returns a Publisher completing when the transaction is ready to be committed
        Returns:
        a Flux completing when the transaction terminates successfully and may emit values that constitute the result of the transaction