mardi 18 février 2014

Champ booléen en oracle

Il n'y a pas de type booléen de défini par défaut en table, en base de données Oracle. Certaines bases de données permettent l'usage de boolean, ou à défaut de bit ou tinyint. Oracle ne le permet pas. 

La meilleur solution consommant le moins de place est un char de un byte ou octet avec deux valeurs permises (O,N ou Y,N ou 0,1). 

Par exemple :
CREATE TABLE BOOLEEN (bool varchar2 (1) check (bool in ('O','N'));

Ou encore :

ALTER TABLE SPI ADD ( COLONNE1 VARCHAR2(1) DEFAULT 'O' NOT NULL CHECK ( COLONNE1 IN ('O','N')));

mardi 4 février 2014

Annotation spring cacheable

L'annotation Spring @Cacheable existe depuis la version 3.1 de SPRING. 

Cette annotation permet de mettre en cache des appels de méthodes. 

Il va sans dire que cela  peut améliorer la performance de l'application mais il faut l'utiliser à bon escient. 

Si la méthode est certaine de retourner toujours le même résultat pour des données en entrée identiques ( arguments) alors il peut être de bon ton de la déclarer Cacheable. 

Si ce n'est pas le cas il vaut mieux éviter de mettre en cache le résultat de l'appel de la méthode. Par exemple si au cours du temps pour les mêmes arguments la valeur de retour de la méthode varie ou évolue. 

D'autres annotations d'intérêt pour le cache sont : @CachePut qui force la mise à jour du cache et sers à initialiser le cache plutôt qu'à optimiser les appels. 

Pour faire simple il permet de populer le cache avec une exécution de méthode qui servira ensuite dans l'optimisation des appels par SPRING. Il ne faut pas utiliser @CachePut et @Cacheable sur la même méthode. 

@CacheEvict lui aussi met à jour le cache mais en effaçant des données. Il supprime possiblement du cache toutes les entrées visées. La méthode dont il est l'annotation peut être de type void car elle n'est qu'un déclencheur d'action. 

Pour combiner plusieurs annotations : l'annotation à utiliser est @Caching. 

La bible de ces annotations se trouve ici : 
Http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/cache.html