I agree with Thaumaturge. If you have alot of hearts (say, more than 8), put them on multiple rows. If you have more than two rows, you've probably chosen the wrong way to display your health; it becomes too cluttered and hard to see at a glance.
If you do go the heart-based way, make sure the hearts don't disappear from sight when your health goes down, but leave a shadowed heart there, so players can see their health relative to their full health.
This is less necessary when displaying enemy health. The player doesn't really need to know the enemy's max health, only it's current health, unless the enemy has so much health (for example, bosses) that the player needs some indication that damage is actually being made.
Another problem with the heart-based system is that damage has to occur in large increments. One damage = 1 heart, or one damage = 1/2 heart. In zelda, you can upgrade your defense towards the end of the game (visiting one of the secret fairy fountains, iirc), and suddenly, in an instant, you get the equivalent of double your health. Your game has to be balanced around that from the beginning. Breaking hearts up into 1/8ths or or 1/16ths rather defeats the purpose of displaying each unit of health as a seperate unit. Even in zelda, when there is 1/4th of heart left, it's easy to at a glance mistake it for 1/2th of a heart.
A better way to perhaps do it would be to have multiple bar 'segments', where each segment can display a fractional amount (like a normal healthbar), and where the player can gain new health bar segments. This way you can have the player take damage in whatever increment you want.
Or take the Metroid route, and let the player collect complete additional health bars. Display the current bar like normal, and how many 'additional' bars you have available in a more compact form.
Other games use this, though often reserved for enemy health bars during boss battles, and more frequently displayed as multiple health bars stacked on one another (because the boss has so much health, but players still need to be able to visually see they are doing damage to the boss and making progress), changing the color of the health bar once each bar is empty (from green health bar, to yellow health bar, to orange health bar, to red emptiness, for example).
One you choose should reflect how the mechanics of your game work. Does the player gradually get health a few points at a time (e.g. 25 health -> 29 health)?
You probably want a solid health bar. Possibly segmented visually, for at-a-glance fractions.
Does your player find/unlock sudden discrete uniform increments in health? The metroid or zelda method might suit it better.
Does the player find/unlock sudden increments in health, and will he ultimately have alot of them? Perhaps some hybrid method, where you find health bar "segments", but for every 10 segments, it is displayed as a metroid-style separate health bar compacted into a single icon above the current healthbar.