It's going to be a long journey.
First, as I said, you'll need to learn about JavaBeans. JavaBeans are a very important concept in
Java and are the basis for many Java services, including JSF.
Secondly, you'll need to cache the results of your database fetch operation. JSF may call a "get" method up to 6 times per page request. So you wouldn't want to fetch the data 6 times. Aside from the overhead of a database fetch, you have the issue of
idempotency. Meaning that if you don't get EXACTLY the same set of items in the same order each time you make the query, then JSF can get messed up.
Thirdly,
you should learn about database connection pools. Java is an expensive language to program in, and so it's best used for high-performance apps. Connection pools make more efficient use of your database resources in a multi-user application (which most webapps are).
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.