you need a transaction to flush your changes you made during the transaction
so throwing a TransactionRequiredException makes a lot of sense.
if you use extended persistence context (with container managed transaction), it commits (flushes) after all business method (which uses transaction) invocation.
but it doesnt close (clear) the persistence context after the transaction. so you can use managed entities during the lifetime of the stateful session bean.
did I answer you question? or could you be more specific?