Impedance, impedance, impedance. I think I should know something about it, since I studied electronics years ago. Unfortunately, I don't remember when I was soldering something. Hmmmmm solving circuits ... is a lost art. Maybe it's not lost. Maybe I should be able to restore these "abilities" by practicing. One thing that I still remember is that things must match each other to work properly. If they do not much, something spectacular may happen. Heat, smoke, a fire, or an explosion. Yep! IT technology doesn't give us such experiences as feedback when something goes wrong. Whatta miss.
These days we do more "gluing" in software than ever before. Connecting things that are totally different. People outside the IT realm do not see the difference. Software is software for them. The difference is quite subtle. It's in the 'idea' on which the software has been built, also known as paradigm. Software has very few constraints in comparison to electronics or mechanics. It easy to implement any 'idea', even an awkward one. Don't believe me? See your source code that is at least 5 years old.
So, let's see what connecting or "gluing" is all about. I like the "gluing" word. When you make a connection between two software entities, there is something in between: a driver, an adapter, a library, a layer, simply a "glue". Let's go back to the impedance analogy. Suppose you've bought a new stereo with an amplifier and speakers. The wire is our glue here; the connection is straightforward. It'll be working most of the time. To get maximum power, you should check if the output amplifier impedance matches the impedance of the speakers. If it doesn't match, you might heat up your house instead of your angry neighbors :).
Impedance mismatch is a common problem in electronics. There are a few solutions. The first one is to make a kind of impedance adapter. It's called transformer. The second one solution is to try to build all devices with the same standardized impedance. It provides easy wiring, but pushes device limitations. The third one is to build devices that matche the impedance of existing devices. All of these solutions have their pros and cons, as usual.
Let's go back to our field, software development. What does impedance mismatch means in the software world? It occurs when you try to connect two software parts that are built on different ideas. It takes some effort to work. You'll need to put something in between. It doesn't matter if you download it or code it. Impedance mismatch can be solved as in the paragraph above.
Where is OneWebSQL, and where is Hibernate in this metaphor? Which heats up more? What is really heating up? Ask these questions yourself. :)