Ing*_*her 20 java ejb java-ee java-ee-6 ejb-3.1
我目前正在创建一个EJB3数据访问类来处理我的Java EE 6应用程序中的所有数据库操作.现在,由于Java EE 6提供了新的ApplicationScoped注释,我想知道我的EJB应该具有什么状态,或者它应该是无状态的.
让DAO成为@Stateless会话Bean或@ApplicationScopedBean 会更好吗?怎么样@Singleton?这些与DAO相关的选项有何不同?
编辑: 我正在使用Glassfish 3.0.1与完整的Java EE 6平台
Pas*_*ent 15
让DAO成为@Stateless会话Bean或@ApplicationScoped Bean会更好吗?@Singleton怎么样?这些与DAO相关的选项有何不同?
我不会将无状态会话Bean用于DAO:
EJB由容器池化,因此如果每个池有N个实例和数千个表,那么你只会浪费资源(甚至不会提到部署时的成本).
将SLO实现为SLSB将鼓励EJB链接,从可扩展性的角度来看,这不是一个好的做法.
我不会将DAO层绑定到EJB API.
将@Singleton在EJB 3.1中引入可以让事情更好一点,但我仍然不会实现的DAO作为EJB的.我宁愿使用CDI(也许是一个自定义的刻板印象,例如参见这篇文章).
或者我根本不会使用DAO.JPA的实体管理器是域存储模式的实现,并且在DAO中对域存储的包装访问不会增加太多价值.
| 归档时间: |
|
| 查看次数: |
15951 次 |
| 最近记录: |