EJB3.0标准本身并未定义隔离级别相关的内容。
EJB是一组件规范,它定义了业务组件的行为、组件与中间件基础框架间的契约。比如EJB组件能正确的使用不同的中间件服务。因此EJB组件是事务性组件,它能够借助于JTA实现同资源管理器的交互。比
如JDBC资源管理器、JMS资源管理器。可以断定EJB本身并不是资源组件。既然隔离级别是底层资源所具有的特定行为和能力,则开发者就应该在资源API一级去指定隔离级别。
隔离级别对于EJB应用的运行性能有非常大的影响,因此要慎重。
控制隔离级别
可以同一事务中为不同资源指定不同的隔离级别,
但是在事务中使用同一资源的所有EJB都应该使用相同的隔离级别。
在SLB和MDB中,BMT允许使用数据库API来指定事务的隔离级别。例如,JDBC API提供了一种机制,可以指定数据库连接的隔离级别。
DataSource source = (javax.sql.DataSource)jndiCntx.lookup("java:comp/env/jdbc/titanDB");
Connection con = source.getConnection();
con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);