datamappers?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Back end developer Python, PHP

Functie Jij als full stack ontwikkelaar zult komen te werken samen met 1 PHP ontwikkelaar een PO en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult voornamelijk (lees 75%) werken aan de roostersoftware. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere flexwerkers ingezet kan worden. Verder willen ze financiële koppelingen gaan maken

Bekijk vacature »

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »

Consultant Low Code Developer

Functie omschrijving Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Voor een mooie opdrachtgever in omgeving Delft zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten. Onderdelen functie Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan Mendix of Betty Blocks. Je bent verantwoordelijk voor

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

Bekijk vacature »

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Fullstack developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Full Stack .NET Developer

Dit ga je doen Als developer nieuwe gave features ontwikkelen; Werken met technieken als C#, Angular 12 en Javascript,; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een team van 7 professionals ben je als Full Stack .NET Developer verantwoordelijk voor het ontwikkelen van applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Wil je van meerwaarde

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

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

06/05/2024 06:29:58
 
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.