Hi,
For this, dontdestroyOnLoad is the way to go, mixed with a custom management for not having duplicate gameObjects if each of your scene features the same prefab. Let me explain a bit.
If you are developing several different scenes, you need to run them separatly, which means, they need to run out of the blue, and so you will have to have your health bar prefab on each scene.
when you load these scene within your actualy game, then you will get a conflict between the currnet health bar and the one coming from the scene you will load.
to solve this, each prefab that needs to exists only once, need to have some custom checks to destroy themselves if they exists already.
Global var is perfect for this, have a global bool flag for each of these prefab, if false, you live and set that to true, if false, you destroy yourself.
This also will likely call for some special initalizer coming from these prefabs. Again global var will come hand here as well, else simply fire some custom gloval events when your prefab is ready, ( and only when it checked it was not redundant, for example after you received the built in event "LEVEL LOADED")
bye,
Jean