Prise en charge d'Oracle


La base de données Oracle présente certaines particularités. JFinal a fourni un support supplémentaire pour ces particularités pour faciliter la majorité des utilisateurs d'Oracle. Ce qui suit est un exemple complet de configuration Oracle :

public class DemoConfig extends JFinalConfig {
public void configPlugin(Plugins me) { C3p0Plugin cp = new C3p0Plugin(…);
//Configure Oracle driver
cp setDriverClass("oracle . jdbc.driver.OracleDriver"); me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp); me.add(arp);
// Configurer le dialecte Oracle
arp.setDialect(new OracleDialect());
// Configurer les noms d'attributs (noms de champs) de la fabrique de conteneurs insensible à la casse arp.setContainerFactory(new CaseInsensitiveContainerFactory()); arp.addMapping("user", "user_id", User.class);
}

En raison d'Oracle The La base de données convertira automatiquement le nom de l'attribut (nom du champ) en majuscules, vous devez donc spécifier manuellement le nom de la clé primaire en majuscule, par exemple : arp.addMaping("user", "ID", User.class). Si vous souhaitez qu'ActiveRecord ne soit pas sensible à la casse pour les noms d'attributs (noms de champs), vous pouvez y parvenir en définissant CaseInsensitiveContainerFactory. Avec ce paramètre, arp.addMaping("user", "ID", User.class ) n'est plus nécessaire.

De plus, Oracle ne prend pas directement en charge les clés primaires à incrémentation automatique, et JFinal fournit une solution pratique pour cela. Il y a deux étapes principales pour qu'Oracle prenne en charge les clés primaires automatiques : l'une consiste à créer une séquence et l'autre consiste à utiliser cette séquence dans le modèle. Les méthodes spécifiques sont les suivantes :

1 : Créez une séquence via la méthode suivante. . Dans cet exemple, le nom de la séquence est : MY_SEQ

CREATE SEQUENCE MY_SEQ INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999999999999999
START WITH 1
CACHE 20;

2 : Utilisez la séquence créée ci-dessus dans YourModel.set(… )

//Créer un utilisateur et utiliser une séquence
Utilisateur user = new User().set("id", "MY_SEQ.nextval").set("age", 18); / Obtenez la valeur de l'identifiant
Integer id = user.get( "id");
L'utilisation de la séquence est très simple, il suffit de votreModel.set (nom de la clé primaire, nom de la séquence

+ « .nextval » ). SpécialNotez que le suffixe « .nextval » doit ici être en minuscules, OracleDialect est sensible à la casse pour cette valeur.