Není cache jako cache
odstiňuje programátora od komunikace s databáz
automaticky řeší běžné operace (čtení/zápis/mazání
automaticky provádí konverzi datových typů
poskytuje programátorovi objektový přístup k datům pomocí entit
řeší základní výkonnostní optimalizace
a bonus...
<?php
/** @Entity */
class User
{
/**
* @ManyToOne(targetEntity="Address")
* @JoinColumn(name="address_id", referencedColumnName="id")
*/
private $address;
}
Co to jsou metadata?
Jak cache zapnout?
<?php
$config = new \Doctrine\ORM\Configuration();
$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ApcuCache());
<?php
$query = $em->createQuery(
'SELECT u FROM MyProject\Model\User u WHERE u.age > 20'
);
$users = $query->getResult();
Co je to query?
Jak cache zapnout?
<?php
$config = new \Doctrine\ORM\Configuration();
$config->setQueryCacheImpl(new \Doctrine\Common\Cache\ApcuCache());
<?php
$query = $em->createQuery(
'SELECT u FROM MyProject\Model\User u WHERE u.age > 20'
);
$users = $query->useResultCache(true)
->setResultCacheLifetime(3600)
->getResult();
Co je to result?
Jak cache zapnout?
<?php
$config = new \Doctrine\ORM\Configuration();
$config->setResultCacheImpl(new \Doctrine\Common\Cache\ApcuCache());
<?php
/**
* @Entity
* @Cache("NONSTRICT_READ_WRITE")
*/
class State
{
/**
* @Column(unique=true)
*/
protected $name;
/**
* @Cache("NONSTRICT_READ_WRITE")
* @OneToMany(targetEntity="City", mappedBy="state")
*/
protected $cities;
}
Co to je Second level Cache?
Různé způsoby ukládání dat
Způsob | Editace? | Rychlost? | Zámky? |
---|---|---|---|
READ_ONLY | NE | +1 | NE |
NONSTRICT_READ_WRITE | ANO | 0 | NE |
READ_WRITE | ANO | -1 | ANO |
Podporuje regiony!
Podporuje regiony!
<?php
/**
* @Entity
* @Cache("NONSTRICT_READ_WRITE", region="state_region")
*/
class State
{
/**
* @Column(unique=true)
*/
protected $name;
/**
* @Cache("NONSTRICT_READ_WRITE")
* @OneToMany(targetEntity="City", mappedBy="state")
*/
protected $cities;
}
Jak cache zapnout?
<?php
$config = new \Doctrine\ORM\Configuration();
$cache = new \Doctrine\Common\Cache\Cache();
$factory = new \Doctrine\ORM\Cache\DefaultCacheFactory($config, $cache);
$config->setSecondLevelCacheEnabled();
$config->getSecondLevelCacheConfiguration()
->setCacheFactory($factory);
tomaspilar.cz | @tomaspilaru