tags:

views:

793

answers:

2

I came across a post that mentioned Tuplizer in NHibernate, can anybody provide a good definition or reference for Tuplizer?

A: 

Well, it might help to understand what a tuple is, first:

http://en.wikipedia.org/wiki/Tuple

Python is most notable for having first class support for Tuples, though some other languages do as well (F#)

http://diveintopython.org/getting_to_know_python/tuples.html

and of course!

http://stackoverflow.com/search?q=tuples

Jeff Atwood
Your answer made me feel mean.
IainMH
+2  A: 

From ITuplizer's source code:

A tuplizer defines the contract for things which know how to manage a particular representation of a piece of data, given that representation's EntityMode (the entity-mode essentially defining which representation).

If that given piece of data is thought of as a data structure, then a tuplizer is the thing which knows how to:

  • create such a data structure appropriately
  • extract values from and inject values into such a data structure

For example, a given piece of data might be represented as a POCO class. Here, it's representation and entity-mode is POCO. Well a tuplizer for POCO entity-modes would know how to:

  • create the data structure by calling the POCO's constructor
  • extract and inject values through getters/setter, or by direct field access, etc

That same piece of data might also be represented as a DOM structure, using the tuplizer associated with the XML entity-mode, which would generate instances of XmlElement as the data structure and know how to access the values as either nested XmlElements or as XmlAttributes.

In the words of Fabio Maulo:

The tuplizer defines how to transform a Property-Value to its persistent representation, and viceversa a Column-Value to its in-memory representation, and the EntityMode defines which tuplizer is in use.

Some things you can do with custom tuplizers:

Mauricio Scheffer