datamappers?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Java Developer

Dit ga je doen Ontwerpen en bouwen van nieuwe functionaliteiten binnen de complexe omgeving; Proactief de processen kwalitatief en efficient inrichten; Opzetten van Unit Tests; Code Reviews; Regie nemen voor innovatieve projecten; Landschap beheren en de bijbehorende ketens hierbij in het oog houden. Hier ga je werken De organisatie is actief binnen de financiele branche en heeft een IT afdeling van circa 450 man. De organisatie voorziet de maatschappij binnen de financiele dienstverlening en is gedurende de jaren een onmisbare schakel geworden. Het is een high profile organisatie waar ze veel te maken hebben met veranderingen voortkomend uit maatschappelijke ontwikkelingen,

Bekijk vacature »

Integratie expert - Java Developer

Dit ga je doen Nieuw koppelingen ontwerpen, ontwikkelen en implementeren; Je schakelt met de klanten om hen zo goed mogelijk van dienst te zijn. Strategisch kijken naar nieuwe mogelijkheden op bestaande of nieuwe koppelingen zo effectief mogelijk te realiseren; Je bestaande toolset afwegen tegen nieuwe mogelijkheden om integratiedoelen steeds effectiever en/of effcienter te bewerkstelligen; Bestaande software koppelingen beheren, dit zijn koppelingen met zowel interne als externe systemen; Overleg met zowel directe collega's als met stakeholders om nieuwe integratieplannen concreet te maken; Je kunt de junioren meenemen op sleeptouw. Hier ga je werken Onze klant is op zoek naar een ervaren

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Oracle Apex Developer

Dit ga je doen Jouw taken bestaan uit: Het bouwen maatwerk Oracle applicaties voor Europese business units; Het implementeren van de nieuwste technieken om te blijven innoveren; Actief meedenken en aandragen van verbetervoorstellen. Hier ga je werken Deze organisatie in de regio Veenendaal is een van wereld grootste retailers met ruim 16.000 winkels in 27 markten en jaarlijks ruim 5,3 miljard klanten die winkelen bij een van hun welbekende retailmerken. Binnen de organisatie is er een IT Group actief die dient als IT Service Provider voor de hele organisatie en waar dagelijks IT'ers werken aan state-of-the-art IT oplossingen. Dit doen

Bekijk vacature »

Front-end Developer

Dit ga je doen Je komt in een DevOps-cultuur te werken waarbij je met je team werkt aan de front-end van diverse brand websites; Het ontwerpen van functionele en grafische ontwerpen die worden geïmplementeerd; Draagt zorg voor het maken van analyses; Je werkt nauw met je collega’s samen en geeft elkaar feedback en suggesties waar nodig; Het uitwerken van vraagstukken die afkomstig zijn van verschillende klanten; Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt

Bekijk vacature »

Ervaren Full stack developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house functie bij een bedrijf met enorme groeipotentie? Ben jij op zoek naar een nieuwe uitdaging vol afwisseling en gezelligheid? Dan ben je bij dit bedrijf aan het juiste adres! Wij zijn in omgeving Breda op zoek naar een ervaren full stack developer. Je gaat werken voor een zeer gewilde werkgever met goede arbeidsvoorwaarden. Je krijgt een plekje in het jonge IT team, work hard, play hard is hier duidelijk het motto! Jouw werkzaamheden zien er als volgt uit: Jij bent verantwoordelijk voor het ontwerpen en bouwen van webapplicaties. Je bent

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

SQL database developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als SQL database developer? Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het development team zijn wij op zoek naar een SQL database ontwikkelaar. Wil jij werken voor een groeiende werkgever in regio Breda waar jij de ruimte en tijd krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je houdt je bezig met het creëren en bouwen van MS SQL server databases; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van logistieke processen; Je gaat projecten vanaf het begin tot het

Bekijk vacature »
Jeroen VD

Jeroen VD

29/08/2013 14:20:44
Quote Anchor link
weer verder met OOP. wat is het beste gebruik van databases in OOP? afgezien van de manier (PDO, mysqli, mysql) ervan.

ik dacht, en wilde dus weten of dat een goede manier is, om voor elk object wat een database gebruikt, een apart opbject te maken, een mapper. een voorbeeldje:

object User, die gebruikt de UserMapper (extended van een algemeen databaseobject), om bijv userId op te halen

of is het beter om dit in het object User te doen? ik denk zelf van niet, maar wat denken jullie?
Gewijzigd op 29/08/2013 15:04:44 door Jeroen VD
 
PHP hulp

PHP hulp

19/12/2024 04:49:56
 
Ken PHP

Ken PHP

29/08/2013 14:32:11
Quote Anchor link
Hier ben ik ook wel nieuwsgierig naar. Ben al een tijdje over hetzelfde aan het nadenken en kan wel wat ideeen van andere gebruiken.

Ik heb nu voor elk 'onderdeel' of db table een eigen class, maar wil heel graag een extra 'laag' aanbrengen, een datamapper of default model...

Classes die ik nu oa heb;
- Background.model.php
- Button.model.php
- Carousel.model.php
- Factory.model.php
- FactoryBrand.model.php
- FactoryCategories.model.php
- FactoryCategory.model.php
- FactoryProduct.model.php
- FactoryProducts.model.php
Etc.....

Is dit in de basis een goede structuur? Of moet ik toch anders denken?

Gr, Ken
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/08/2013 14:55:05
Quote Anchor link
Jeroen,

overduidelijk je eerste optie.

kijk eens naar de grotere frameworks,
daar zie je duidelijk één database class en voor bijna elke tabel in de database een eigen Entity-class. De 'user' entity heeft dan alle properties zoals die ook in de tabel Users als kolommen voorkomen. Daarnaast heeft deze class getters en setters.
Dankzij ORM weten we hoe deze properties in de database worden opgeslagen.
Maar voor ieder object een eigen (afgeleide) mapper kan natuurlijk ook.


Toevoeging op 29/08/2013 14:57:28:

wat mij betreft de mappers niet extenden van de database class maar de mappers moeten de database class gebruiken.
 
Jeroen VD

Jeroen VD

29/08/2013 15:04:06
Quote Anchor link
hmm, krijg je op die manier dan niet veel te veel geheugengebruik ten opzichte van elke class een eigen mapper geven die zijn eigen geoptimaliseerde queries heeft?

en met de databaseclass bedoel ik de verbinding enzo... dat de mapper alleen zijn getters en setters heeft, zodat de verbinding eenmaal aangemaakt wordt, met zo weinig mogelijk code?

@ken, jij bedoeld elke tabel een aparte class geven?.... dan is jouw database structuur op het eerste gezicht behoorlijk inefficient
 
Wouter J

Wouter J

29/08/2013 15:35:21
Quote Anchor link
Elke tabel (op koppeltabellen na) zijn vertegenwoordigt door een class (entity) in OO. De database is vertegenwoordigt door een Database klasse en daartussen in heb je datamappers, die zijn specifiek voor 1 entity.
 
Jeroen VD

Jeroen VD

29/08/2013 15:46:36
Quote Anchor link
als ik het goed begrijp dus dit?:

willekeurige klasse -> tabel klasse -> Mapper klasse (die zijn verbinding etc haalt uit de database klasse) -> database tabel

en naamgevingsconventies hierbij, of is dat gewoon tableTablename.class en tablenameMapper.class etc
 
Wouter J

Wouter J

29/08/2013 15:54:57
Quote Anchor link
Nee, het is:

Entity -> DataMapper -> Database => DB

Dus bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
class User
{
    private $name;
    private $age;

    // ...
}

class UserMapper implements DataMapperInterface
{
    public function findById($id)
    {

        $result = ...; // perform SELECT query

        return $this->populate($result);
    }


    public function populate(array $result)
    {

        $u = new User();
        $u->setName($result['name']);
        $u->setAge($result['age']);

        return $u;
    }
}


class PDOMySQLDatabase extends AbstractPDODatabase
{
    // ... db methods
}
?>

Waarschijnlijk ga je een GeneralDataMapper maken, aangezien de methods create, find, save en delete vaak hetzelfde zijn. Je kan zelfs met __call werken en ook de method findById en findByAge in deze klasse verwerken. Het enige wat je dan nog nodig hebt is een populate en extract method, die informatie in/uit een Entity stoppen/halen en natuurlijk custom methods, zoals findByNameOrderedByAge().
Even je code tussen de code-tags gezet, omdat dat niet meer automatisch gaat bij de php-tags[/modedit]
Gewijzigd op 29/08/2013 23:37:22 door Nick Dijkstra
 
Jeroen VD

Jeroen VD

29/08/2013 23:16:29
Quote Anchor link
ik snap het bijna helemaal..... ligt het aan mij, of is die PDOMySQKDatabase een tikkeltje overbodig? wat doet die? waarom kun je in de mapper niet de complete query uitvoeren, waarbij je een simpel connectieobject toevoegt?
 
Wouter J

Wouter J

30/08/2013 08:28:08
Quote Anchor link
Quote:
is die PDOMySQKDatabase een tikkeltje overbodig? wat doet die? waarom kun je in de mapper niet de complete query uitvoeren, waarbij je een simpel connectieobject toevoegt?

Op deze manier ben ik niet afhankelijk van de manier van opslag, precies het nut van OO dus. Ik hoef alleen een andere klasse te instantiëren en ik kan een sqlite db gebruiken. Ik kan zelfs een nieuwe adapter maken en gaan werken met de MySQLi extensie of zelfs met een xml bestand. Dat kan ik allemaal doen door maar 1 regel te veranderen, anders moet ik elke datamapper aanpassen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/08/2013 09:31:15
Quote Anchor link
Als ik nu een functie wil hebben ( zoiets als toArray() ) die de private properties uit de User class (en ook andere entities) haalt en in een associatieve array teruggeeft? wordt dat dan een onderdeel van de DataMapperInterface?
 
Wouter J

Wouter J

30/08/2013 11:10:00
Quote Anchor link
Frank, nee. DataMapper is de laag tussen DB en Entity, wat jij nu doet heeft daar niks mee te maken. Ik zou dan een EntityUtil klasse maken die dit doet.
Wel is het zo dat de DataMapper dit moet doen, dus heb ik een method extract (oid) in mijn datamapper die dit doet. Deze roept simpelweg de EntityUtil aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

class UserMapper extends AbstractDataMapper
{
    protected function extract(User $user)
    {

        return EntityUtil::toArray($user);
    }


    protected function populate(array $data)
    {

        $user = new User($data['name']);
        $user->setAge($data['age']);

        return $user;
    }
}


class EntityUtil
{
    static public function toArray($entity)
    {

        $entityReflection = new \ReflectionClass($entity);
        $data = ...; // gebruik reflection om data te krijgen

        return $data;
    }
}

?>
Gewijzigd op 30/08/2013 11:10:51 door Wouter J
 
Jeroen VD

Jeroen VD

30/08/2013 11:13:47
Quote Anchor link
het zal misschien een domme vraag zijn... maar hoe doe je dan in de method findById() de query uitvoeren? daarvoor heb je toch een geinstantieerd object van PDOMySQLDatabase nodig IN die method? of mag dat dan weer wel?

p.s. die db methods, zijn dat methods die de query daadwerkelijk uitvoeren, en je in de mapper alleen de query doorgeeft?
 
Wouter J

Wouter J

30/08/2013 11:52:32
Quote Anchor link
Quote:
daarvoor heb je toch een geinstantieerd object van PDOMySQLDatabase nodig IN die method? of mag dat dan weer wel?

Ja, je injecteert de Database instance in je DataMapper:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

class UserMapper ...
{

    private $db;

    public function __construct(DatabaseInterface $db)
    {

        $this->db = $db;
    }


    public function findById($id)
    {

        return $this->populate($this->db->query(...)->getResult('FETCH_ASSOC'));
    }
}


// in gebruik
$db = new ...Database(...); // dit doe je 1 keer

$usermapper = new UserMapper($db); // geeft db instance mee

$usermapper->findById(2);
?>
Gewijzigd op 30/08/2013 16:09:30 door Wouter J
 
Jeroen VD

Jeroen VD

30/08/2013 12:05:47
Quote Anchor link
ah het wordt al een stuk duidelijker... blijft lastig, OOP!
in ieder geval bedankt, ga er mee stoeien :)
 
Ken PHP

Ken PHP

30/08/2013 13:06:09
Quote Anchor link
Jeroen VD op 29/08/2013 15:04:06:
@ken, jij bedoeld elke tabel een aparte class geven?.... dan is jouw database structuur op het eerste gezicht behoorlijk inefficient


Jeroen, kan goed begrijpen dat je dit denkt. Opzet van de database is ook wel anders dan mijn bericht doet vermoeden. Ik kan in ieder geval heel goed op weg met alle antwoorden. Dat was eigenlijk al een beetje wat ik zocht :) Bedankt voor je individuele reactie!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/08/2013 15:53:18
Quote Anchor link
Dank je Wouter ik heb nu even niet de gelegenheid om hier echt mee te gaan stoeien maar wellicht kom ik nog terug met een vraagje.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.