Writing /home/infogasy/domains/wiki.infogasy.net/public_html/data/cache/7/75ed9c6060c400a388cd5b06e0bdc058.xhtml failed

Fanorenana Informatika mampiasa ny tetika POJO faha V

Mikasika ny mpitahiry maharitra karazana « Objet » : Db4Object (tohiny) :

Raha fehezina kely ilay fanombohana ny tahiry Db4Object sy ny fampiasana azy ao anaty rafim-panorenana MSL-POJO natomboka iny dia izao :

- mampiasa isika zany ny fonosana Db4Object ka ny vesrion 6.3 no nalaina ary napetraka tao @ny « répertoire » /lib ny projet Eclipse-ntsika ilay izy. Vokany dia afaka mampiasa ny fitehirizina Db4Object avy hatrany isika @ireo kilasy aorintsika. Ny fanaovana izany dia ho hitantsika fa miantso fotsiny ireo méthodes tokony hilaina @ny fotoana mahamety izany … - Aseho an-tsary eto @izao fotoana izao ny firafitry ny kilasy sy interfasy vita hatreto :

:wiki:pojo05_01.png

 

Fanovana nentina @ny kilasy “persistente”:

Ny fanovana ho entina @ny kilasy Post antsoina hoe : “classe persistente” dia tsy inona fa ny fametrahana “constructeurs” iray ahafahana manokatra “connection” @ny tahiry Db4Object-ntsika. Ny connection ohatra raisintsika eto dia ny karazana mivantana anaty “fichier” avy hatrany (fanamorana ny fianarana aloha !). Tsara marihina mantsy fa mbola misy karazana hafa izay fampiasa rehefa tena “production” no atao: Tsy inona izany fa ny fampiasana ny fomba “client/serveur”, ka misy fomba roa: - fomba “embedded” na “embarqué”, tsy mila fampidirana nom/mot de passe , ary tsy mila mampiasa « socket » rehefa mifandray ny “client” sy “serveur”. - fomba client/serveur mila mampiditra nom/mot de passe, ary @ny alalàn’ny « socket » no ifandraisan’ny «client» sy ny «serveur» ; ambonin’ny TCP/IP.

Fomba fanoratra vaovao ilay kilasy Post : …………

public class Post extends ServiceDb4Object
{
	private String idPost;
	private Date datePost;
	private String titre;
	private String contenu;
	private int niveau;
/**
 * Connection "direct fichier" à une base Db4o
 * @param nomFichierYAP
 */	
	public Post(String nomFichierYAP)
	{
		super(nomFichierYAP);
	}
/**
 * Les constructeurs classiques
 */	
	public Post() {}
	
	public Post(String idPost, 
				Date datePost, 
				String titre, 
				String contenu,
				int niveau) 
	{
		this.contenu = contenu;
………………………………….

Endrika « implementation » ilaina hatreto ao anaty ServiceDb4Object

………………………………
/**
 * @author JPA
 */
 
public class ServiceDb4Object extends ModeleUCM implements IServicePersistent
{ 
	protected ObjectServer objServer;
	protected ObjectContainer db; // Le conteneur d'objet de la BDO
	protected ExtObjectContainer dbExt; // le conteneur étendu
	
/** Ouverture et initialisation des variables d'exploitation 
 * de la base de donnée objet en local dans cette application
 */
	protected ServiceDb4Object()
	{
	}
/**
 * Connection "direct fichier"
 * @param fichier
 */
	protected ServiceDb4Object(String fichier)
	{
		try
		{
			UtilApp.setConfigDb4o();
			db = Db4o.openFile(UtilApp.cheminYAP.concat(fichier));
			dbExt = db.ext();
		}
		catch(Exception e)
		{
		}
	}
/** Getter et setter de ObjectContainer
 * @return l'attribut ObjectContainer
 */
	public ObjectContainer getDb() 
	{
		return db;
	}
	
	public ExtObjectContainer getDbExt()
	{
		return dbExt;
	}
/** Fermeture du container
 * @return l'attribut ObjectContainer
 */
	public void closeDb() 
	{
		getDbExt().purge(); // purger tous les références du container
		getDb().close();
	}
/** Création instance unique de la classe modèle dans la BDO
 * @param objMbre - l'instance à enregistrer dans la base
 * @param keyIndex - identifiant
 * @param keyName - le nom de l'identifiant
* @return l'instance du modèle créé, sinon une valeur de référence null
 */
	public synchronized	boolean creerObjetModele(	Object objMbre,
						String keyIndex,
						String keyName) 
	{ 
		if(0 != this.getNameIdModele().compareTo(keyName))
			return false;
		if(isIdObjectInBaseClass(keyIndex)) 
		{
			return false;
		}
		else 
		{
			UtilDb4.storeObject(getDb(), objMbre);
			return true;
		}
	}
 
/** 
 * Retourner la liste de tous les objets du modèle courant dans la base de donnée,
 * @return un vecteur contenant le résultat
 */
	public Vector getAllObject() 
	{
		Vector 	vectDataRow,
			vectDataResult = new Vector();
		ObjectSet result = null;
		try 
		{
			result = UtilDb4.getAllObject(getDb(), this.getClass());
			while(result.hasNext()) 
			{
				Object model = result.next();
				getDbExt().refresh(model,5);
				if(!this.setObject(model)) continue;
				vectDataRow = this.toVector();
				vectDataResult.add(vectDataRow);
			}
			return vectDataResult;
		}
		catch (Exception e)	
		{
			return new Vector();
		}
	}
 
…………………………

Fanazavana kely :

Hatreto izany rehefa jerentsika @ny sary ambany ny fiovan’ny rafitra laminasa MSL-POJO-ntsika ao anaty Eclipse dia toy izao :

:wiki:pojo05_02.png

Hitantsika amin’io ary fa nisy kilasy vitsy nampiana tao :

Efa fantantsika moa fa ireo kilasy “utilitaires” : UtilUCM, UtilDb4, UtilApp dia natao hasiana ireo « méthodes statiques », na attribut « statiques » na koa « constant ». Ny an’ny UtilDb4 zany dia natao ho fampiasana ireo fitrandrahana andalany ambany ny fitehirizana Db4Object. Ny an’ny UtilApp kosa dia natokana ho an’ny asa fanorenana manokana atao eto : filalaovana “objets” Post ny ohatra ataontsika izao.

Nasehontsika ambony eo ny mety ho hita anaty kilasy ServiceDb4Object hampiasana matetika rehefa hilalao tahiry Db4object isika: hita @ireo ampahany “implementation”-ny MSL-POJO moa ny fomba fanokafana tahiry @ny alalan’ny “constructeur” ; ny fametrahana “objet” Post anaty tahiry Db4object; ny fangalana ny “objets” Post rehetra tanaty tahiry Db4Object, sns …. Ny fampiasana ireo fonosana MSL-POJO moa dia saika hita tao anaty interfasy IservicePersistent daholo ny « signature »-n’ireo « méthodes » rehetra fampiasa …

Asehontsika etsy ambany moa kilasy TestInfogasy.java iray fanaovana andrana na « simulation » fampiasana ny rafitra MSL-POJO raha hitrandraka ny tahiry Db4Object isika : - Mamorona « objet » Post iray. - Manokatra tahiry Db4Object iray isika. - Mampiditra io objet io anaty tahiry maharitra. - Mamaky avy hatrany ireo “objet” rehetra tanaty tahiry maharitra. - Atranga tsirairay @ny “écran” ireo “objet” vaosintona. - Akatona ny mpitahiry Db4object.

package tetikaPOJO;
 
import java.util.Date;
import java.util.Iterator;
import java.util.Vector;
 
public class TestInfogasy 
{
	static public void main(String arg[])
	{
		Post post1 = new Post("P1",new Date(),"Laminasa POJO","BLA BLA BLA ...",2); // manamboatra Post iray
		Post conDb4o = new Post("TahiryDb4o.yap"); // manokatra connection Db4o “direct fichier”
		
// Mametraka ilay Post post1 anaty tahiry mitondra anarana “TahiryDb4o.yap”
		System.out.println("CREER :"+conDb4o.creerObjetModele(post1,post1.getIdPost(),"idPost"));
// Vakiana anaty tahiry Db4Object ireo “objets” Post rehetra		
		Iterator it = conDb4o.getAllObject().iterator(); // Marihina fa mampiasa UCM N°1  ny methode “getAllObject()”
		while(it.hasNext())
		{
			System.out.println((Vector)it.next());
		}
		conDb4o.closeDb(); // akatona ny tahiry Db4object 
	}
}

Fehiny :

Hitantsika amin’izany ary fa tsotra tokoa ny mitrandraka ny fitehirizana Db4Object, na efa anaty rafitra MSL-POJO aza. Homentsika eto ihany moa ny fonosana « .jar » ny msl-pojo.jar misy ireo ilaina rehetra rehefa vita ny lahasoratra, satria miorina miandalana izy io, araka ny hitantsika anaty projet Eclipse io !

Fomba tsotra no natao : Avy @ireo kilasy « persistente »-nao izany dia zavatra roa no azonao atao: 1. Manamboatra “objet” ianao ilaina @ny fiasana’ny “système” amborinao (na tsotra toy ny eto na misy vainga maro miara-miasa toy ny @ny fanorenana rehetra mahazatra). 2. Manamboatra “objet” fanaovana “connection” ilaina @ny fitrandrahana ny fitehirizana Db4Object.

Ny vokatra azo avy @izay tetika izay dia lehibe tokoa satria rehefa manao “analyse/conception” ianao dia efa afaka avy hatrany manao “simulation” ny mety ho fiasan’ilay “système” tsikelikely miandalana …

Lahasoratra manaraka: Ny dingana manaraka moa @ny lahasoratra dia ho fijerena indray ny antsoina hoe : “modèle de presentation” ao anaty tetika MSL-POJO: Eto araka ny teny tany amboalohany dia ny fanehoana miaraka @ny JSP (Java Server Page) no hataontsika andrana … Noho izany dia hampiasa “serveur d’application Java” iray isika, sady HTTP koa : Jetty 5.1.12 no hampiasaina.

(hitohy)

 

pojofahav.txt · Novaina farany:: 2008/09/11 12:43