Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
DBI connection and transaction management
Perl
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/DBIx
t
xt
.gitignore
Build.PL
Changes
LICENSE
META.json
README.md
cpanfile

README.md

NAME

DBIx::Handler - fork-safe and easy transaction handling DBI handler

SYNOPSIS

use DBIx::Handler;
my $handler = DBIx::Handler->new($dsn, $user, $pass, $opts);
my $dbh = $handler->dbh;
$dbh->do(...);

DESCRIPTION

DBIx::Handler is fork-safe and easy transaction handling DBI handler.

DBIx::Hanler provide scope base transaction, fork safe dbh handling, simple.

METHODS

  • my $handler = DBIx::Handler->new($dsn, $user, $pass, $opts);

    get database handling instance.

  • my $handler = DBIx::Handler->connect($dsn, $user, $pass, $opts);

    connect method is new methos alias.

  • my $dbh = $handler->dbh;

    get fork safe DBI handle.

  • $handler->disconnect;

    disconnect current database handle.

  • my $txn_guard = $handler->txn_scope

    Creates a new transaction scope guard object.

    do {
        my $txn_guard = $handler->txn_scope;
            # some process
        $txn_guard->commit;
    }
    

    If an exception occurs, or the guard object otherwise leaves the scope before $txn->commit is called, the transaction will be rolled back by an explicit "txn_rollback" call. In essence this is akin to using a "txn_begin"/"txn_commit" pair, without having to worry about calling "txn_rollback" at the right places. Note that since there is no defined code closure, there will be no retries and other magic upon database disconnection.

  • $txn_manager = $handler->txn_manager

    Get the DBIx::TransactionManager instance.

  • $handler->txn_begin

    start new transaction.

  • $handler->txn_commit

    commit transaction.

  • $handler->txn_rollback

    rollback transaction.

  • $handler->in_txn

    are you in transaction?

  • my @result = $handler->txn($coderef);

    execute $coderef in auto transaction scope.

    begin transaction before $coderef execute, do $coderef with database handle, after commit or rollback transaciont.

    $handler->txn(sub {
        my $dbh = shift;
        $dbh->do(...);
    });
    

    equals to:

    $handler->txn_begin;
        my $dbh = $handler->dbh;
        $dbh->do(...);
    $handler->txn_rollback;
    
  • my @result = $handler->run($coderef);

    exexute $coderef.

    my $rs = $handler->run(sub {
        my $dbh = shift;
        $dbh->selectall_arrayref(...);
    });
    

    or

    my @result = $handler->run(sub {
        my $dbh = shift;
        $dbh->selectrow_array('...');
    });
    
  • my $sth = $handler->query($sql, [\@bind | \%bind]);

    exexute query. return database statement handler.

  • $handler->result_class($result_class_name);

    set result_class package name.

    this result_class use to be create query method response object.

  • $handler->trace_query($flag);

    inject sql comment when trace_query is true.

AUTHOR

Atsushi Kobayashi

SEE ALSO

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Something went wrong with that request. Please try again.