This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
Basically yes it is required. When the App Server provides transaction processing, it has to monitor the entire transaction and provide all the necessary means to hold everything within the method, including JDBC stuff within that transaction.
I would suggest that the stuff done to the database be put into a POJO, most likely a DAO object, than hvaing that code directly in the Session Bean.