【问题标题】:.java terms and random words clarification.java术语和随机词澄清
【发布时间】:2011-04-02 21:52:28
【问题描述】:

我对 java、jsf、jsp 真的很陌生,我需要快速了解它是如何工作的。所以我用来练习的网站有一些我不知道它们的意思的术语等,我希望有人能解释它们的意思以及它们的用途/用途:)

Requestscoped
Applicationscoped
Sessionscoped
EntityManager

有人可以告诉我这些线是做什么的吗?

@RequestScoped
public class Dao {

    @DataRepository
    @Inject
    private EntityManager entityManager;

【问题讨论】:

  • “我需要快速了解它的工作原理。”谷歌很快,你为什么不试试呢?
  • 你可以用谷歌搜索这些东西或查看文档。我们真的需要将文档粘贴到这里吗?
  • err 是的,我用谷歌搜索了所有这些东西,但我找不到任何描述这些东西的好网站,你在说什么“文档”?

标签: java entitymanager


【解决方案1】:

首先,在 Java(5 及更高版本)中,以 @ 开头的“事物”(例如 @Deprecated)称为 annotations

注解提供关于一个 不属于 程序本身。他们没有直接 对代码运行的影响 他们注释。

如果你想在 JSF 中使用你的 JavaBeans 需要配置一个作用域(定义可以在here找到)。

  • @RequestScoped:具有此范围的对象从请求开始到结束都是可见的 的请求。请求范围从请求的开头开始,到请求结束时结束 响应已发送给客户端。如果请求被转发,对象是可见的 在转发页面中,因为该页面仍然是同一请求/响应的一部分 循环。具有请求范围的对象可以使用其他具有无、请求、会话、 或应用范围。如果您必须从 servlet 的角度来考虑,托管 bean 存储在HttpServletRequest 中,直到请求结束(当响应发送到客户端时)。之后,该 bean 不再存在于请求中。
  • @SessionScoped:具有会话范围的对象对于任何请求/响应周期都是可见的 属于一个会话。具有此范围的对象的状态在 请求并持续到对象或会话无效。带有会话的对象 scope 可以使用其他具有 none、session 或 application 范围的对象。基本上,这些对象存储在HttpSession 中(再次参考Servlet)。每个会话都有一个与 bean 关联的会话 ID(称为 JSESSIONID)。
  • ApplicationScoped:具有应用程序范围的对象在所有请求/响应周期中都是可见的 对于使用该应用程序的所有客户端,只要该应用程序处于活动状态。就 Servlet 而言,这可能是存储在 ServletConfig 中的托管 bean。
  • @NoneScoped:具有此范围的对象在任何 JSF 页面中均不可见。在配置文件中使用时,它们表示应用程序中其他托管 bean 使用的托管 bean。没有范围的对象可以使用其他没有范围的对象。

对于EntityManager,这与持久性上下文相关联。它用于创建和删除持久实体实例,通过主键标识查找实体,以及查询所有实体。有关更多信息,请参阅 JPA(Java Persistence API)规范或Hibernate

@Inject,表示实例是可注入的。他们遵循臭名昭著的依赖注入控制反转(IOC)的俗语。这基本上意味着,当资源(在你的情况下EntityManager entityManager 是需要时,JEE 容器会为你实例化资源(你不需要通过例如构造函数等直接实例化它)。

我不知道@DataRepository 是什么意思。以前没见过。

希望对你有帮助。

【讨论】:

  • 感谢您的帮助。我对“创建和删除持久实体实例”有点困惑,什么是实体和实体实例?
  • 持久数据是可以存储在持久存储设备(例如内存、RAM等)中的数据。在 Java 中,持久对象是 Serializable 并包含属性(也是可序列化的)的对象,它使您能够将对象存储在持久存储介质中。
  • @jones,很高兴能帮上忙。不要忘记接受对您有帮助的答案。勾选答案点下方的复选标记以接受。
【解决方案2】:

这些术语通常与 guice 之类的依赖注入框架相关联,而与 java 无关。

http://code.google.com/p/google-guice/wiki/Scopes 描述了 guice 内置的各种作用域。

默认情况下,Guice 每次提供值时都会返回一个新实例。此行为可通过范围进行配置。范围允许您重用实例:在应用程序 (@Singleton)、会话 (@SessionScoped) 或请求 (@RequestScoped) 的生命周期内。 Guice 包含一个 servlet 扩展,它定义了 Web 应用程序的范围。可以为其他类型的应用程序编写自定义范围。

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 1970-01-01
    • 2011-10-09
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多