Most important is
you should know what you can do.
Message Driven Bean - CMT or BMT
Session Bean - CMT or BMT
Entity Bean - CMT only.
BMT - You have to Code
CMT - You can control through Deploy Descriptor attributes.
For CMT, Message Driven Bean can use only NotSupported and Requried.
BMT transactions are one way. They can propogate out to a CMT bean, but no other transaction can propogate into a BMT bean.
Th advantage inn BMT I see is that you can reduce the scope of a transaction.
Having said this, I would prefer CMT, unless there is something that I cannot do with CMT, but can do with BMT.
Peter.