对于业务对象怎么封装的在过去Core J2EE Pattern上,把业务对象的属性都是散列开的。而且其中有个不佳实践,就是把业务对象当中的所有属性都变成一个传输对象(这个传输对象看上去有点像领域模型)。新的技术编程模型下(EJB3.0)应该让业务对象直接持有实体,而不是把每一个属性都列开原因在于,如果把属性都列开,那么业务对象本身应该被管理,为什么呢?如果多个事务或多个现程在访问本来相同的业务对象(标识相同) 的时候,那么由于业务对象不受管,他们创建了各自的实例,彼此不相干,但是当最后提交内容的时候,就可能会导致结果很意外这个同 容器的四种事务隔离级别的意义很类似,如果要将BO的属性都列开,那么,就应该让BO受管,相当于单独实现一个BO的容器,控制并发,控制事务这个容器 要实现多个线程共享一个标识相同的业务对象,并控制并发访问,合适的隔离事务。也就是说要做一个容器应该做的事情应该巧妙的利用容器提供的持久性容器来解决这个问题将实体放到业务对象中,对业务对象的操作,实际上是业务对象的业务方法的操作,而业务方法操纵的是持久化上下文中的实体的状态,每一个被创建出来具有相同标识的业务对象,虽然是不同的实例,但是都包含对同一个实体对象的引用。这样对业务对象状态的变更,实际上是对一个实体对象状态的变更,仍然属于受管状态但是这个时候也一定要搞清楚,业务对象包裹的这个实体的状态:新建、受管、脱管、已删除