Changeset 29506

Show
Ignore:
Timestamp:
02/04/09 11:54:01 (4 years ago)
Author:
nowelium
Message:

とりあえず、preparedStatementを利用できるようにbatchMode

Location:
lang/php/misc/Hermit/src
Files:
14 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/HermitContext.php

    r26373 r29506  
    66class HermitContext { 
    77    protected $reflector; 
     8    protected $batchMode = false; 
    89    public function __construct(ReflectionClass $reflector){ 
    910        $this->reflector = $reflector; 
     
    1819        return $this->reflector; 
    1920    } 
     21    public function setBatchMode($mode){ 
     22        $this->batchMode = $mode; 
     23    } 
     24    public function isBatchMode(){ 
     25        return $this->batchMode; 
     26    } 
    2027} 
  • lang/php/misc/Hermit/src/Hermit/annote/HermitAnnote.php

    r26373 r29506  
    1717    public abstract function getQuery(ReflectionMethod $method); 
    1818    public abstract function getValueType(ReflectionMethod $method); 
     19    public abstract function getBatchMode(ReflectionMethod $method); 
    1920    public static final function create(ReflectionClass $reflector){ 
    2021        return new HermitAnnoteConst($reflector); 
  • lang/php/misc/Hermit/src/Hermit/annote/HermitAnnoteConst.php

    r26373 r29506  
    1414    const PROCEDURE_SUFFIX = '_PROCEDURE'; 
    1515    const VALUE_TYPE_SUFFIX = '_VALUE_TYPE'; 
     16    const BATCH_MODE_SUFFIX = '_BATCH_MODE'; 
    1617    const CHECK_SINGLE_ROW_UPDATE = 'CHECK_SINGLE_ROW_UPDATE'; 
    1718     
     
    120121        return $valueType; 
    121122    } 
     123    public function getBatchMode(ReflectionMethod $method){ 
     124        $batchMode = self::getMethodAnnotation($this->reflector, $method, self::BATCH_MODE_SUFFIX); 
     125        if(null === $batchMode){ 
     126            return self::getClassAnnotation($this->reflector, self::DEFAULT_PREFIX . self::BATCH_MODE_SUFFIX); 
     127        } 
     128        return $batchMode; 
     129    } 
    122130    public function getColumns(){ 
    123131        $columns = $this->reflector->getConstant(self::COLUMNS_KEY); 
  • lang/php/misc/Hermit/src/Hermit/command/AbstractHermitSqlCommand.php

    r26373 r29506  
    99    protected $sqlCreator; 
    1010    protected $type; 
     11    protected $statement; 
    1112    public function setContext(HermitContext $ctx){ 
    1213        $this->context = $ctx; 
  • lang/php/misc/Hermit/src/Hermit/command/HermitDeleteCommand.php

    r26373 r29506  
    77    public function execute(array $parameters){ 
    88        $pdo = $this->getConnection(HermitEvent::EVT_DELETE); 
    9         $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
    10         $stmt = $builder->build($pdo, $parameters); 
    11         $stmt->execute($parameters); 
     9        $genStmt = false; 
     10        if(null === $this->statement){ 
     11            $genStmt = true; 
     12        } else { 
     13            if(!$this->context->isBatchMode()){ 
     14                $genStmt = true; 
     15            } 
     16        } 
     17        if($genStmt){ 
     18            $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
     19            $this->statement = $builder->build($pdo, $parameters); 
     20        } 
     21        $this->statement->execute($parameters); 
    1222        $resultset = new HermitUpdateQueryResultSet; 
    13         return $resultset->execute($stmt, $this->type); 
     23        return $resultset->execute($this->statement, $this->type); 
    1424    } 
    1525} 
  • lang/php/misc/Hermit/src/Hermit/command/HermitDeleteSqlCommandFactory.php

    r25869 r29506  
    1616        $valueType = HermitValueTypeFactory::create($this->annote, $this->method); 
    1717         
     18        $batchMode = $this->annote->getBatchMode($this->method); 
     19        $context->setBatchMode($batchMode); 
     20         
    1821        $command = new HermitDeleteCommand; 
    1922        $command->setContext($context); 
  • lang/php/misc/Hermit/src/Hermit/command/HermitInsertCommand.php

    r26373 r29506  
    77    public function execute(array $parameters){ 
    88        $pdo = $this->getConnection(HermitEvent::EVT_INSERT); 
    9         $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
    10         $stmt = $builder->build($pdo, $parameters); 
    11         $stmt->execute($parameters); 
     9        $genStmt = false; 
     10        if(null === $this->statement){ 
     11            $genStmt = true; 
     12        } else { 
     13            if(!$this->context->isBatchMode()){ 
     14                $genStmt = true; 
     15            } 
     16        } 
     17        if($genStmt){ 
     18            $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
     19            $this->statement = $builder->build($pdo, $parameters); 
     20        } 
     21        $this->statement->execute($parameters); 
     22         
    1223        $resultset = new HermitUpdateQueryResultSet; 
    13         return $resultset->execute($stmt, $this->type); 
     24        return $resultset->execute($this->statement, $this->type); 
    1425    } 
    1526} 
  • lang/php/misc/Hermit/src/Hermit/command/HermitInsertSqlCommandFactory.php

    r23133 r29506  
    1313        $valueType = HermitValueTypeFactory::create($this->annote, $this->method); 
    1414         
     15        $batchMode = $this->annote->getBatchMode($this->method); 
     16        $context->setBatchMode($batchMode); 
     17         
    1518        $command = new HermitInsertCommand; 
    1619        $command->setContext($context); 
  • lang/php/misc/Hermit/src/Hermit/command/HermitProcedureSqlCommandFactory.php

    r23133 r29506  
    1818        $valueType = HermitValueTypeFactory::create($this->annote, $this->method); 
    1919 
     20        $batchMode = $this->annote->getBatchMode($this->method); 
     21        $context->setBatchMode($batchMode); 
     22         
    2023        $command = new HermitProcedureCommand; 
    2124        $command->setContext($context); 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSelectCommand.php

    r26373 r29506  
    77    public function execute(array $parameters){ 
    88        $pdo = $this->getConnection(HermitEvent::EVT_SELECT); 
    9         $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
    10         $stmt = $builder->build($pdo, $parameters); 
    11         $stmt->execute($parameters); 
     9        $genStmt = false; 
     10        if(null === $this->statement){ 
     11            $genStmt = true; 
     12        } else { 
     13            if(!$this->context->isBatchMode()){ 
     14                $genStmt = true; 
     15            } 
     16        } 
     17        if($genStmt){ 
     18            $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
     19            $this->statement = $builder->build($pdo, $parameters); 
     20        } 
     21        $this->statement->execute($parameters); 
     22         
    1223        $resultset = HermitResultSetFactory::create($this->method); 
    13         return $resultset->execute($stmt, $this->type); 
     24        return $resultset->execute($this->statement, $this->type); 
    1425    } 
    1526} 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSelectSqlCommandFactory.php

    r25869 r29506  
    2020        } 
    2121        $valueType = HermitValueTypeFactory::create($this->annote, $this->method); 
     22         
     23        $batchMode = $this->annote->getBatchMode($this->method); 
     24        $context->setBatchMode($batchMode); 
    2225         
    2326        $command = new HermitSelectCommand; 
  • lang/php/misc/Hermit/src/Hermit/command/HermitUpdateCommand.php

    r26373 r29506  
    77    public function execute(array $parameters){ 
    88        $pdo = $this->getConnection(HermitEvent::EVT_UPDATE); 
    9         $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
    10         $stmt = $builder->build($pdo, $parameters); 
    11         $stmt->execute($parameters); 
     9        $genStmt = false; 
     10        if(null === $this->statement){ 
     11            $genStmt = true; 
     12        } else { 
     13            if(!$this->context->isBatchMode()){ 
     14                $genStmt = true; 
     15            } 
     16        } 
     17        if($genStmt){ 
     18            $builder = new HermitStatementBuilder($this->context->getTargetClass(), $this->method, $this->sqlCreator); 
     19            $this->statement = $builder->build($pdo, $parameters); 
     20        } 
     21        $this->statement->execute($parameters); 
    1222        $resultset = new HermitUpdateQueryResultSet; 
    13         return $resultset->execute($stmt, $this->type); 
     23        return $resultset->execute($this->statement, $this->type); 
    1424    } 
    1525} 
  • lang/php/misc/Hermit/src/Hermit/command/HermitUpdateSqlCommandFactory.php

    r25869 r29506  
    1515        } 
    1616        $valueType = HermitValueTypeFactory::create($this->annote, $this->method); 
     17        $batchMode = $this->annote->getBatchMode($this->method); 
     18        $context->setBatchMode($batchMode); 
    1719         
    1820        $command = new HermitUpdateCommand; 
  • lang/php/misc/Hermit/src/Queue/HermitQueueDao.php

    r27954 r29506  
    55 */ 
    66interface HermitQueueDao { 
     7    const default_BATCH_MODE = true; 
     8 
    79    const wait_SQL = 'SELECT queue_wait(/*table*/"table", /*timeout*/5)'; 
    810    const wait_VALUE_TYPE = 'NUM';