I have recently been reading about,TableData Gateway and RowData Gateway.According to "Patterns of Enterprise Application Architecture" RDG deals with one record at a time and TDG deals with a whole table.But both these patterns look very similar,they encapsulate SQL queries and either return a single record or many records in a recordset based on the queries we make.I cannot really figure out when to prefer TDG for RDG.It would be very helpful to clarify the difference with some explaination.According to Martin Fowler TDG is the same as RDG when it returns one record.But we can also use RDG for multiple records also!then why use TDG. Any help will be appreciated. Thank You.
How TableData gateway differs from Rowdata Gataway?.. need clarification
4.4k Views Asked by Alex At
1
There are 1 best solutions below
Related Questions in DESIGN-PATTERNS
- Will it slow down the performance when Unit of work pattern is used with EF Core
- Design patterns - How Design patterns work with bulk data
- Using Repository pattern to fetch data from different places and build list of objects
- Suggest best design patterns to update or insert bulk data
- Mapping one collection of objects into another collection of objects
- How can I break down a large presenter in the Viper design pattern into smaller pieces?
- How to create under the label in Textformfield, not a border, in Flutter
- Own Pattern / framework for interfacing with components in C
- Common Method Implementation for Elasticsearch and OpenSearch Java SDK
- How can I decouple them?
- Understanding Potential Deadlock in Resource Pool Implementation Described in "Go in Action"
- Dependency Injection Patterns stand alone implementaion
- How to use GoF design pattern for software robustness?
- Pipeline data processing and code architecture
- Mocking inherited class where new object is created or how to unsmell my class
Related Questions in POEAA
- XSLT position() function not working as expected in Two Step View
- How to temporarily circumvent domain object's creation contracts when restoring application from backup?
- What are the differences between Object Collections, Object Aggregates, Object Associations, and Object Composition?
- Handling derived class creation using mappers in C++
- Two Step View Pattern
- Where should an objects' associated objects be restored when using the table data gateway pattern?
- Mapping database columns to domain model with Zend Framework 2
- Differences Between Query Object and Specification Patterns
- row data gateway return value
- Should I Replace Multiple Float Columns with a BLOB?
- How should a data mapper return a domain object?
- in Zend, Why do We use DB Model class and Mapper class as two separate?
- Storage for DataMappers in ASP.NET WebApplication
- Must the repository have persist functionality?
- Application layering and DataMapper
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Row Data Gateway encapsulates access to a row in the DB, whereas Table Data Gateway encapsulates access at the table level, and it doesn't seem to me that one is a degenerate form of the other at all.
While Table Data Gateway has find methods that return RecordSets, with Row Data Gateway, you need a separate Finder class that returns one gateway class per row.
Whether you use either and which you use are complex decisions tied in with your choices of which other patterns you're using.
From his discussions in the "When to Use It" sections about both patterns, if using the Domain Model pattern, he would prefer using Active Record over either. Both of these gateway patterns are sensible to use in combination with Transaction Script.
Table Data Gateway is simpler, so if it does what you need it might be the right choice.
You wouldn't likely ever use both of these patterns in a single application.