`
whiteangell
  • 浏览: 11147 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Netbeans6.8+GlassFishV3体验JEE 6 之三JPA2.0

阅读更多
一、JPA2.0简介
JPA2.0 加入了大量必须的 ORM 映射增强特性,包括:支持通过使用 @ElementCollection 标注来增强 collections, maps 和 lists( 这里不是指实体之间的关联关系 ) 集合,支持 map 的单向 one-to-many 关联 (JPA1.0 只允许双向 one-to-many 关联 ) .
  EntityManager 和 Query API 都得到改进。比如说,现在可以从结果集中直接取得第一条记录 (JPA1.0 只允许从一个 unique 结果集中反回单个记录 ) ,指定 query 结果集的最大值,访问各个供应商的底层实体对象 manager 或 query ,最后就是加入悲观锁 (JPA1.0 只支持乐观锁 ) .
  JPQL 也提供类似于 SQL 的 CASE , NULLIF , COALESCE 等函数 .
  JPA2.0 应广大开发者要求增加了 Criteria API .要是你对 Hibernate 或 TopLink 的 Criteria API 不熟悉的话,可以将它想像成一个以 Java 为中心的面向对象,线程安全并可以与 JPQL 划上等号的一组 API .这组 API 适合于编写复杂的动态查询语句,还可避免解析 JPQL 语句时,所抛出的运行期异常。
  更完整的 JAP2.0 特性还包括:标准的二级缓存,标准的 JDBC properties ,指定超时时间等等。你可以随时通过下面的 JSR 站点看看关于 JPA2.0 公开草案的更多细节: http://jcp.org/en/jsr/detail?id=317
二、新建JPA2.0项目
按快捷键ctrl+shift+n打开新建项目的对话框如下图:

选择普通的WEB项目,点击“下一步”,弹出如下图对话框:

在项目名称中输入“testjap2”点击“下一步”,弹出如图对话框:

在服务器选择“GlashFish V3”,在Java EE版本选择“Java EE 6 Web”;在上下文路径选择“/testjap2”点击完成。
三、新建数据表
   我在Sql Server数据库demo中新建一个表user代码如下:
create table [user]
(
  userid int identity(1,1) not null primary key,
  usercode varchar(60),
  username varchar(60),
  password varchar(100),
  email    varchar(100),
  remark   varchar(200)

); 

四、创建持久层
  新建三个包com.ejb、com.pojo、com.servlet在com.pojo点击右键选择“新建”—>“通过数据库生成实体类”如下图:

在弹出对话框中选择自己建立的数据源并选择表User如下图:

点击“下一步”弹出如下对话框:

点击创建持久性单元弹出如下图对话框:

持久性单元名称输入:“testja2PU”,持久性提供器:Eclipselink、数据源选择jdbc/demo点击“创建”后点击“完成”。
五、创建数据库访问层。
  在com.ejb包单击右键“新建”—>“会话EJB”如下图对话框:

则弹出如下图对话框:

在EJB名称中输入:UserDao、在会话类型中选择“无状态”点击确定。
成生成代码下增加一些代码结果如下:
package com.ejb;

import com.pojo.User;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class Userdao {
   @PersistenceContext(unitName = "testjap2PU")
   private EntityManager em;
   public void save(User entity)
   {
       this.em.persist(entity);
   }
   public  void delete(User entity)
   {
      em.remove(entity);
   }
   public void update(User entity)
   {
       em.merge(entity);
   }
   public List<User> getAll()
   {
       Query query =em.createNamedQuery("User.findAll");
       return query.getResultList();
   }
   public User getById(int id)
   {
       return (User)em.createNamedQuery("User.findByUserid").getSingleResult();
   }
   public User getByUserCode(String usercode)
   {
        Query query  = em.createNamedQuery("User.findByUsercode");
        return (User)query.getSingleResult();
   }
   public User getByUserName(String username)
   {
       Query query = em.createNamedQuery("User.findByUsername");
       return (User)query.getSingleResult();
   }
}

@Stateless定义了一个会话Bean, @PersistenceContext(unitName = "testjap2PU")持久性单元上下文环境注入了SessionBean。
六、新建Servlet测试类。
   在com.servlet 包点击右键新建Servlet.如下代码:

package com.servlet;

import com.ejb.Userdao;
import com.pojo.User;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "TestServlet", urlPatterns = {"/TestServlet"})
public class TestServlet extends HttpServlet {

    @EJB
    private Userdao userDao;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String msg = "";
        String para = request.getParameter("methed");

        if (para.equals("insert")) {
            String username = request.getParameter("username");
            String usercode = request.getParameter("usercode");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            User user = new User();
            user.setUsercode(usercode);
            user.setUsername(username);
            user.setPassword(password);
            user.setEmail(email);
            this.userDao.save(user);
            msg = "插入成功:" + username;
        }

        if (para.equals("update")) {
            String username = request.getParameter("username");
            String usercode = request.getParameter("usercode");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            User user = new User();
            user.setUsercode(usercode);
            user.setUsername(username);
            user.setPassword(password);
            user.setEmail(email);
            this.userDao.save(user);
            msg = "修改成功:" + username;
        }
        if (para.equals("delete")) {

            String usercode = request.getParameter("usercode");
            User user = this.userDao.getByUserCode(usercode);
            if (user != null) {
                this.userDao.delete(user);
            }
            msg = "删除成功:" + user.getUsername();
        }
        if (para.equals("findall")) {

            List<User> list = this.userDao.getAll();
            for(User user :list)
            {
                msg += "—>"+user.getUsername();
            }
        }
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet TestServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println(msg);
            out.println("</body>");
            out.println("</html>");

        } finally {
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String mothed = request.getParameter("mothed");
        if (mothed.equals("insert")) {
            processRequest(request, response);
        }
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}

七、测试
  保存启动GlassFish3,启动浏览器;
  输入:http://localhost:8080/testjpa2/TestServlet?methed=insert?usercode=zhangshan&username=张三&password=1234&email=zhangshan@gmail.com则页面则提示“插入成功”;
输入:http://localhost:8080/testjpa2/TestServlet?methed=update?usercode= zhangshan &username=张三&password=123456&email=zhangshan@sina.com则页面提示“修改成功”;
输入:http://localhost:8080/testjpa2/TestServlet?methed=delete?usercode= zhangshan则页面提示“删除成功”;
输入:http://localhost:8080/testjpa2/TestServlet?methed= findall则页面显示所有用户名称。
对数据的操作感觉如Hibernate一样的舒服!呵呵。。。。。下一节继续体验rest full webservice。
  • 大小: 52.4 KB
  • 大小: 48.6 KB
  • 大小: 45.6 KB
  • 大小: 28.4 KB
  • 大小: 54.7 KB
  • 大小: 53.1 KB
  • 大小: 27.1 KB
  • 大小: 28 KB
  • 大小: 42.6 KB
0
0
分享到:
评论
1 楼 Fly_m 2009-12-22  
一口气,把三篇全看完了,期待第四篇.以前没用过glassfish,也对j2ee,特别是ejb之类不熟(光用spring了),看了下来.javaee6有这么高级了?
谢谢了哈,我也下来看看:)

相关推荐

    初学netbeans6.8

    6. **版本控制**:虽然未直接提及,但NetBeans 6.8也集成了版本控制系统,如Git或CVS,这对于团队协作和代码管理至关重要。初学者可以借此机会学习如何提交、拉取、合并代码。 7. **错误调试**:IDE内置的调试工具...

    Android+Netbeans6.8环境搭建

    首先,你需要准备以下三个主要的安装包:Jdk1.7、Netbeans6.8和Android SDK。JDK(Java Development Kit)是开发Java程序的基础,Netbeans则是一款强大的集成开发环境(IDE),而Android SDK则是用于构建Android应用...

    Android\Android+Netbeans6.8环境搭建

    搭建Android开发环境是每个Android开发者必须要经历的步骤,本文将详细介绍如何使用Netbeans6.8与Android SDK结合,创建一个完整的开发环境。 首先,我们从基础开始,你需要下载以下组件: 1. JDK 1.7:Java ...

    netbeans 6.8开发c/c++ 程序(1)

    标题 "netbeans 6.8开发c/c++ 程序(1)" 指向的是使用NetBeans 6.8版本进行C/C++程序开发的主题。NetBeans是一款开源的集成开发环境(IDE),它支持多种编程语言,包括C和C++。在本主题中,我们将深入探讨如何利用...

    netbeans 6.8开发c/c++ 程序(2)

    标题中的“netbeans 6.8开发c/c++程序(2)”表明了本文将深入探讨如何使用NetBeans 6.8版本的集成开发环境(IDE)进行C和C++编程。NetBeans是一款开源且跨平台的IDE,支持多种编程语言,包括C和C++,在6.8版本中,它...

    Netbeans 6.8 安装后配置记录

    NetBeans 6.8是一款历史悠久且功能强大的集成开发环境(IDE),主要用于编写Java应用程序,同时也支持其他编程语言如PHP、C++...对于源码和工具的管理,NetBeans提供了丰富的支持,使其成为开发者信赖的开发工具之一。

    Netbeans6.8 配置php5.30.doc

    ### NetBeans 6.8 配置 PHP 5.30 的详细步骤及注意事项 #### 一、前言 本文档旨在详细介绍如何在 NetBeans 6.8 中配置 PHP 5.30 开发环境的过程。为了实现这一目标,我们需要借助 XAMPP 作为本地服务器环境,并对...

    mingw5.1.6+gdb6.8+msys1.0.11

    6. NetBeans配置指南:描述如何在NetBeans中配置MingW、GDB和MSYS,以便在IDE内使用。 通过这个整合包,开发者可以在Windows环境中搭建起一个完善的C/C++开发环境,实现从编写代码、编译到调试的完整流程,而且能够...

    IDE快捷 方便使用NetBeans IDE 6.8

    ### 使用NetBeans IDE 6.8提升开发效率 #### 一、引言 随着软件开发技术的不断进步,集成开发环境(IDE)成为了提高开发者工作效率的重要工具之一。NetBeans IDE作为一款免费开源的IDE,凭借其强大的功能和易用性...

    Netbeans 6.8配置Mysql数据库 (2).docx

    在本文中,我们将详细探讨如何在NetBeans 6.8集成开发环境中配置MySQL数据库,以便进行高效的数据库管理和开发工作。NetBeans作为一个强大的开源IDE,支持多种编程语言,并且集成了数据库管理功能,使得开发者能够在...

    基于Netbeans8.2 + MySql + JDK1.8实现的综合教务系统课程设计(课程设计报告+源码)

    【作品名称】:基于Netbeans8.2 + MySql + JDK1.8实现的综合教务系统【课程设计】(课程设计报告+源码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实...

    Netbeans 6.8配置Mysql数据库.docx

    本文将详细介绍如何在NetBeans 6.8版本中配置MySQL数据库,以便进行数据库相关的开发工作。 首先,我们需要理解NetBeans与MySQL数据库之间的连接原理。MySQL是一种流行的开源关系型数据库管理系统,而NetBeans作为...

    Java实验工具2(netbeans-6.8m2-ml-javase-windows)

    【标题】"Java实验工具2(netbeans-6.8m2-ml-javase-windows)" 是一个针对Windows平台的Java开发环境,基于NetBeans IDE的特定版本,即6.8 Milestone 2。这个工具包专为进行Java编程实验而设计,适合初学者和专业...

    NetBeans+Tomcat+MySQL配置

    ### NetBeans、Tomcat与MySQL配置详解 #### Tomcat安装及配置 1. **下载Tomcat**:访问[Tomcat官方网站](http://tomcat.apache.org/)进行下载,新手推荐使用Windows Installer版本,便于安装。 2. **安装路径**:...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    ### 在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架 #### 一、概述 在当今的企业级应用程序开发中,采用MVC(Model-View-Controller)架构模式的框架组合变得越来越普遍。其中,Struts2、Spring与Hibernate...

    Netbeans 开发 JSF 2.0 入门学习,使用Primefaces 及JPA

    在本文中,我们将深入探讨如何使用Netbeans IDE进行JSF 2.0的开发,并结合Primefaces和JPA来创建高效、用户友好的Web应用程序。JSF(JavaServer Faces)是一种用于构建Java Web应用程序的MVC(模型-视图-控制器)...

    JPA+Netbeans6直接操作数据库

    在NetBeans 6中,支持JPA的集成使得开发者能够直接在IDE内进行数据库操作,大大提高了开发效率。 **J2EE(Java Platform, Enterprise Edition)**是Java技术的一个版本,专为构建企业级应用程序而设计。它包含一组...

    netbeans6.8

    NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建...NetBeans项目由一个活跃的开发社区提供支持, NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。

    NetBeans IDE+使用说明和示例

    NetBeans IDE是一款开源的集成开发环境,由Sun Microsystems开发,主要用于Java应用程序的开发。NetBeans IDE支持多种编程语言,如Java、PHP、C++和HTML5等,并具备代码编写、调试、分析和单元测试等开发工具的功能...

Global site tag (gtag.js) - Google Analytics