利用CDI和JPA开发Servlet应用 - 面向对象网,web开发,jsp,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > Web开发 > Jsp > 正文

利用CDI和JPA开发Servlet应用

来源: www.bianceng.cn 阅读:

开始之前

关于 CDI

JSR-299 规范原来叫做 Web Beans,其主要目的是为了整合 JSF 和 EJB 。到 2009 年正式发布该规范时,JSR-299 已经改称 “Contexts and Dependency Injection for the Java EE platform”(简称 CDI ),整合 JSF 和 EJB 仍是其目的,但这并非 CDI 的唯一功能。

通读 JSR-299 规范的文本,描述最多的是依赖注入(Dependency Injection, DI ) 容器。CDI 的 DI 有与众不同 之处,它的第一个字母 C,代表 Contexts,是上下文环境,也是范围。CDI 注入的对象必须与某个 Context 关联,其生命周期与 Web 应用的各个范围息息相关。

本教程适合的读者对象

阅读本教程的读 者需具备以下基础:

熟悉 Servlet 开发。示例的应用逻辑比较简单,有了 Servlet 编程基础就能看 懂。

熟悉 JPA 开发。需要对 Persistence Context 和 Entity Manager 有一定了解。

熟悉 Maven 工 具。本教程的示例应用配置了 pom.xml,对初次接触 Maven 的读者,第一次更新依赖库时可能会有较多的问 题,需要了解 Maven 的基本操作才能解决。

了解 Spring IoC。教程中经常会比较 CDI 和 Spring IoC, 不熟悉 Spring IoC 的读者可略过这些内容。

本教程的内容选择

本教程探讨了在 Servlet 环 境中使用 CDI,没有用到 JSF 和 EJB。这么做主要是出于下面的考虑:

JSF 对 Servlet 封装得很深 ,在处理各个范围时不如 Servlet 来得直观。

Servlet 是每个 Java Web 开发者必备的知识技能,熟悉 JSF 的开发者相对较少。

Servlet 环境中使用 CDI 复杂度较低,结合了 JPA 后,也能实现 JSF + EJB 组 合的许多重要特性。

起草中的 JSR-346,即 CDI 1.1 规范,增强了对 Servlet 的支持力度。

本教 程的内容组织

本教程基本遵照项目驱动的方式来组织知识点,所用的示例应用实现了雇员信息的查看 和修改。涉及的 CDI 功能包括:

CDI 作为依赖注入容器的特点和用法。

用 CDI 实现声明式事务管 理。

用 CDI 实现在 Session 范围里共享 Persistence Context。

监听 CDI 容器的事件。

开发 环境配置

下面列出示例应用所用开发环境及工具软件的版本:

Tomcat,版本 7.0.28。

Eclipse Java EE IDE for Web Developers,版本 Indigo SR2。

Maven,版本 3.0.4。

Maven 配置

示例应用用到了 Weld 和 Hibernate,使用 Maven 来管理项目,需要添加 JBoss Public 仓库和 相关依赖项,pom.xml 中相关配置代码如清单 1 所示。

清单 1. pom.xml 配置代码片断

<repositories> 
    <repository> 
        <id>jboss-public-repository-group</id> 
        <name>JBoss Public Repository Group</name> 
        <url>http://repository.jboss.org/nexus/content/groups/public/</url> 
        <layout>default</layout> 
       …
    </repository> 
</repositories> 
<dependencies> 
    <dependency> 
        <groupId>org.jboss.weld.servlet</groupId> 
        <artifactId>weld-servlet-core</artifactId> 
        <version>1.1.8.Final</version> 
    </dependency> 
    <dependency> 
        <groupId>org.jboss.weld</groupId> 
        <artifactId>weld-core</artifactId> 
        <version>1.1.8.Final</version> 
    </dependency> 
    <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-entitymanager</artifactId> 
        <version>4.1.4.Final</version> 
    </dependency> 
   …
</dependencies>

初次下载工程以后,可到工程目录下执行:mvn dependency:resolve,让 maven 下载相关依赖包。

Tags:
相关文章列表: