FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Repository pattern implementation that knows nothing (Jon Snow) about the database table and column names
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Repository pattern implementation that knows nothing (Jon Snow) about the database table and column names [message #186367 is a reply to message #186366] Tue, 08 July 2014 16:17 Go to previous messageGo to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma:
Senior Member
On 7/8/2014 11:47 AM, qissolol(at)gmail(dot)com wrote:
> I've seen around the Internet and Github, implementations for the design pattern Repository that knows about database table and column names. I was think, if I want to work with the database as a plugin, that I can unplug and plug another respecting Open/Closed for the rest of my code, my repository should not know about the column names of the database I'm using. So how to implement this pattern in a way that it can transform the result from the database into a Entity of my domain, without knowing about the database table and column names?
>
> As my main language is PHP, I saw that in Doctrine\ORM you can easily pass different yamls or xmls config files, mapping the column names to property names on the Entity, but... I cant be a hostage of a library implementation, if I want to implement raw PDO, or any other library for my repositories that doesn't make this hydration out-of-the-box, my implementation should do, so how?
>

No, typically the repository DOES know about the table and column names
in the database; it's purpose is to separate the database definition
from the rest of the program so that only the repository depends on the
database. Change the database and change the repository, but the rest
of the code remains the same.

Without knowing the database information, the repository would have to
query the database definitions and internally build a description of the
database. This can easily be done (PhpMyAdmin, for instance, does it).
However, what this doesn't tell the program is exactly what's in each
column and how tables are related.

For instance, take a simple example (shortened for brevity):

TABLE employee
id
last_name
first_name
...

TABLE department
id
dept_name
manager_id

TABLE employee_department
employee_id
department_id

Now, you want a list of all employees managed by "John Doe". To a
person, constructing the query from the above definition would be
relatively easy. But it would be very complex for a program to do.

This could be done, as you found, by passing descriptions of the
database. But you don't want that.

All I can say is, good luck. It's something which has been dreamed
about for years, but no one has been able to implement except in very
limited circumstances.

--
==================
Remove the "x" from my email address
Jerry Stuckle
jstucklex(at)attglobal(dot)net
==================
[Message index]
 
Read Message
Read Message
Read Message
Previous Topic: schemadb oleata test it
Next Topic: Help with Pear Soap Client to weather service
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Dec 01 07:33:33 GMT 2024

Total time taken to generate the page: 0.04166 seconds