ORM – “Impedance mismatch”

Also known as “Paradigm mismatch”.

Object/Relational Mapping has an inherent paradigm mismatch when it comes to granularity,subtypes,navigating an object graph and polymorphism.

– The problem of granularity – Columns in a table are necessarily “scalar” (atomic). Perhaps there are database-specific features that dont have this limitation, but in general, this is a paradigm mismatch that must be kept in mind.

–  The problem of subtypes – How to map Inheritance hierarchies to database tables?

How to efficiently navigate an object graph? Example: userobj->getAddress()->getZip();

Interesting question: Why not use serialization for the persistence layer?

Java has a built-in persistence mechanism: Serialization provides the ability to write a graph of objects (the state of the application) to a byte-stream, which may then be persisted to a file or database. Serialization is also used by Java’s Remote Method Invocation (RMI) to achieve pass-by value semantics for complex objects.
Another usage of serialization is to replicate application state across nodes in a cluster of machines.

Why not use serialization for the persistence layer? Unfortunately, a serialized graph of interconnected objects can only be accessed as a whole; it’s impossible to retrieve any data from the stream without deserializing the entire stream. Thus, the resulting byte-stream must be considered unsuitable for arbitrary search or aggregation.
It isn’t even possible to access or update a single object or subgraph independently.
Loading and overwriting an entire object graph in each transaction is no option for systems designed to support high concurrency.

Hibernate is supposed to provide the most elegant solution to all the above mentioned problems.

Even better, Hibernate supports user-defined custom types. The interfaces UserType and CompositeUserType are provided to allow you to add your own types.

Good stuff for power users

http://www.hanselman.com/blog/ – a lot of good stuff



Useful tidbits of information on windows-specific tools..

Managing Oracle Optimizer Statistics

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/stats.htm#i41811 – Found the part on Dynamic Sampling very interesting.