It's a big topic, but basically a container managed transaction means that the container is going to do all the work for you (starting transactions, committing/rollbacking transactions...). If you don't want the container to do everything for you, if you want to control when to start/end transactions, you can use a bean managed transaction. I think
you should refer to a book, or to the core specification to know more about each. Trying some examples given in a book will also help you to understand how different they are.