jjzjj

JavaEE6 DAO : Should it be @Stateless or @ApplicationScoped?

coder 2023-08-27 原文

我目前正在创建一个 EJB3 数据访问类来处理我的 Java EE 6 应用程序中的所有数据库操作。现在,由于 Java EE 6 提供了新的 ApplicationScoped 注释,我想知道我的 EJB 应该具有什么状态,或者它是否应该是无状态的。

让 DAO 成为 @Stateless session Bean 或 @ApplicationScoped Bean 会更好吗? @Singleton 怎么样?这些与 DAO 相关的选项之间有什么区别?

编辑: 我在完整的 Java EE 6 平台上使用 Glassfish 3.0.1

最佳答案

Whould it be better to let the DAO be a @Stateless Session Bean, or an @ApplicationScoped Bean? What about @Singleton? What are the differences between these options related to a DAO?

我不会为 DAO 使用无状态 session Bean:

  1. EJB 由容器汇集,因此如果每个池有 N 个实例和数千个表,您只会浪费资源(更不用说部署时的成本了)。

  2. 将 DAO 实现为 SLSB 会鼓励 EJB 链接,从可扩展性的角度来看,这不是一个好的做法。

  3. 我不会将 DAO 层绑定(bind)到 EJB API。

EJB 3.1 中引入的 @Singleton 可以使事情变得更好一些,但我仍然不会将 DAO 实现为 EJB。我宁愿使用 CDI(也可能是自定义构造型,例如参见 this article)。

或者我根本不会使用 DAO。 JPA 的实体管理器是 Domain Store 的一个实现模式和包装对 DAO 中域存储的访问不会增加太多值(value)。

关于JavaEE6 DAO : Should it be @Stateless or @ApplicationScoped?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3223112/

有关JavaEE6 DAO : Should it be @Stateless or @ApplicationScoped?的更多相关文章

  1. 【JAVAEE】JAVA数据库连接(JDBC) - 2

    1.什么是JDBC?Java数据库连接,(JavaDatabaseConnectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是SunMicrosystems的商标。我们通常说的JDBC是面向关系型数据库的。简而言之,JDBC就是JDK提供的关于数据库操作的一套接口规范,不同数据库厂商来负责实现这个接口,完成指定的操作。用程序和数据建立连接,分为三步骤:1.连接数据库2.执行SQL语句3.把查询到的结果集转换成JAVA对象2.对于MySQL的JDBC编程的前期准备工作知识拓展:JAR文件(Java归

  2. 不变之“DAO” - 2

    加州意识形态的先知们认为,只有自由市场和全球通信的控制论流和混沌漩涡才能决定未来。因此,政治辩论是一种浪费。作为自由主义者,他们断言由民主政府所调解的人民意志是一种危险的异端邪说,它妨碍了自然而有效地积累财产的自由。作为技术决定论者,他们相信人类社会和情感纽带阻碍了机器的有效进化。放弃了民主和社会团结,加州意识形态梦想着一个数字天堂,只由自由精神人格者栖居着。——安迪·卡梅伦和理查德·巴布鲁克,“加州意识形态”随着全球社会的兴起,我们正在经历的混乱中,声誉已经失去了很多意义。随着旧机构的倒台,在垂死的领域中的人们有一种甩卖心态,他们利用前几代人建立的声誉获利。由于我们的政治制度失败,政客们表现

  3. 【JavaEE进阶】——第二节.Spring核心和设计思想 - 2

    文章目录前言一、Spring是什么?二、什么是容器?三、什么是IoC?3.1初始loC3.2举例解释loC3.3 SpringIoC思想的体现四、什么是DI?4.1DI的概念4.2 Ioc和DI的区别总结前言今天我们将进入到有关spring的认识当中,要使用它的前提就是要认识并熟悉它,上一节我们介绍了有关maven的配置,必须要配置完成后,才能完成我们后面的学习工作,让我们进入到今天的学习当中吧!!!!!!!!!一、Spring是什么?概念:我们通常所说的Spring指的是SpringFramework(Spring框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因

  4. javascript - DAO 与 ORM - 在 Sequelize.js 的上下文中解释的概念 - 2

    我最近一直在使用Sequelize.js,并且经常遇到术语“DAO”。来自ActiveRecord(在Rails中),ORM的想法似乎非常简单。谁能给我解释一下DAO是什么?它与ORM有何不同?它如何导致更多模块化代码/防止抽象泄漏?编辑:阅读以下内容后:https://www.reddit.com/r/learnprogramming/comments/32a1fr/what_is_the_general_difference_between_dao_and_orm/感觉/似乎DAO可以被认为是一个单一的“模型”——在ActiveRecord的上下文中,我的用户实例将被认为是一个DA

  5. 【JavaEE】基于TCP的客户端服务器程序 - 2

    目录简单的英译汉翻译程序TCPAPITcpEchoServerTcpEchoClinet解决只能处理一个客户端的问题简单的英译汉翻译程序接着上篇博客,我们继续来学习Socket套接字的相关知识点,首先我们写一个英译汉翻译程序即客户端不变,把服务器代码进行调整,关键的逻辑就是把响应写回给客户端。packagenetwork;importjava.io.IOException;importjava.net.SocketException;importjava.util.HashMap;importjava.util.HashSet;importjava.util.Map;//使用继承,是为了复用之

  6. 【JavaEE】网络原理基础讲解 - 2

    目录1.网络的发展史1.1网络的由来 1.2网络互联1.2.1独立模式(单机模式)1.2.2局域网(LAN)1.2.3广域网(WAN)2.网络通信基础 2.1IP地址 2.2端口号3.计算机网络协议3.1网络协议定义3.2网络协议分层3.3OSI七层模型3.4TCP/IP模型(重点)1.网络的发展史1.1网络的由来 很多先进的东西都是先是军用,后来发现这东西太方便了,才普遍下来。网络是什么来的呢?在没有互联网之前,军队都是通过电报、电话来通信的,这东西有一个缺点就是在使用时容易被拦截。于是,美国人就研究,能不能搞一种通讯,可以防止拦截,此时,互联网这个东西就诞生了。 1.2网络互联网络互连:将

  7. javascript - Angular.js 和 DAO 模式 - 2

    首先,我必须承认我对Angular.js很陌生,之前我没有使用过任何新一代js框架,如Backbone或Knockout。我正在创建一个使用RESTfulAPI与服务器通信的应用程序。我深入研究了Angular文档和博客笔记,以便我能做对。我找到的例子主要是$resource.它看起来很不错:许多内置方法,当您正确设计REST接口(interface)时,您甚至不必再编写任何东西。但我(以及我的整个团队)更习惯于JavaEE思考模型层的方式:轻量级模型类(POJO等)、持久化和获取模型的DAO类以及DAO和Controller之间可选的服务层。另一方面,在Angular中,$resou

  8. go - 错误;不能将 imageName(类型 ImageName)用作 appendgo 中的 dao.ImageName 类型 - 2

    我正在用Go重构服务器端逻辑,但出现无法解决的错误。・client:react/axios・api:golang/gin・web-server:nginx・db:mysql・container:docker・ci-tool:travis・deploy:awselasticbeanstalk服务.gofuncGetSingleArticleService(c*gin.Context,db*sql.DB)Article{article,rows:=dao.GetSingleArticleDao(c,db)forrows.Next(){imageName:=ImageName{}err:=r

  9. go - 使用多个数据库(DAO 模式) - 2

    我正在创建一个项目,它应该能够使用不同的数据库来保存数据。我已经实现了DAO模式,但在使用结构中的ID时遇到问题,因为例如MongoDB使用BSON而SQL数据库使用uint。你推荐什么解决方案来实现结构中的ID字段。我能想到的是创建一个ID对象,其中包含BSON和uintID的字段,使用GetBSON、GetUint方法和一个将BSON或uint编码为MD5(或其他编码)的​​GetID方法我会使用GetBSON和GetUint方法与数据库一起工作,GetID方法在应用程序上工作,并通过RESTAPI发送它。 最佳答案 在这种情况

  10. 【JavaEE初阶】第六节.网络原理TCP/IP协议 - 2

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、TCP/IP协议五层协议栈;1.1应用层协议;二、传输层协议;2.1UDP协议;2.2TCP协议;      2.2.3序号2.3UDP和TCP协议传输的区别;2.4超时重传;2.5连接管理(面试中最高频的问题.网络知识中,最最高频的考题,没有之一!!!)2.5.1建立连接(“三次握手”)2.5.2断开连接(“四次挥手”)2.5.3三次握手;四次挥手总结;2.6滑动窗口2.7流量控制2.8拥塞控制2.9流量控制和拥塞控制的联系;2.10延时应答;2.11捎带应答2.22面向字节流2.23TCP连接出现异常时,如何处

随机推荐