There are some constructs in CDI which are available to injection per default but you do not see right out-of-the-box for what use case it can be good. Or if you have a use case you do not know how to use this bean.
I had the same problem with UserTransaction and now I share my knowledge about the topic.
OK, imagine you work on a software which has a lot of modules, you have a database in the background and you use it. You create, read, update and delete data, the reading queries contain sometimes an IN clause where you enter some values. Beside this
you are damned you are forced you have to use Oracle as DBMS.
One day you get a bug report from your QA that something does not work what worked in the last… months. You look up the StackTrace (it’s good if you have one) and see following error message:
||maximum number of expressions in a list is 1000