It is common and proper for the get/set property methods to be invoked multiple times during the
JSF lifecycle. That is why get/set methods should not have side effects and should do no heavy work.
It also sounds like you might have your backing bean defined in Request scope. Request Scope is almost totally useless in JSF, on account of the way JSF form postbacks work.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.