一、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
分享到:
相关推荐
6. **版本控制**:虽然未直接提及,但NetBeans 6.8也集成了版本控制系统,如Git或CVS,这对于团队协作和代码管理至关重要。初学者可以借此机会学习如何提交、拉取、合并代码。 7. **错误调试**:IDE内置的调试工具...
首先,你需要准备以下三个主要的安装包:Jdk1.7、Netbeans6.8和Android SDK。JDK(Java Development Kit)是开发Java程序的基础,Netbeans则是一款强大的集成开发环境(IDE),而Android SDK则是用于构建Android应用...
搭建Android开发环境是每个Android开发者必须要经历的步骤,本文将详细介绍如何使用Netbeans6.8与Android SDK结合,创建一个完整的开发环境。 首先,我们从基础开始,你需要下载以下组件: 1. JDK 1.7:Java ...
标题 "netbeans 6.8开发c/c++ 程序(1)" 指向的是使用NetBeans 6.8版本进行C/C++程序开发的主题。NetBeans是一款开源的集成开发环境(IDE),它支持多种编程语言,包括C和C++。在本主题中,我们将深入探讨如何利用...
标题中的“netbeans 6.8开发c/c++程序(2)”表明了本文将深入探讨如何使用NetBeans 6.8版本的集成开发环境(IDE)进行C和C++编程。NetBeans是一款开源且跨平台的IDE,支持多种编程语言,包括C和C++,在6.8版本中,它...
NetBeans 6.8是一款历史悠久且功能强大的集成开发环境(IDE),主要用于编写Java应用程序,同时也支持其他编程语言如PHP、C++...对于源码和工具的管理,NetBeans提供了丰富的支持,使其成为开发者信赖的开发工具之一。
### NetBeans 6.8 配置 PHP 5.30 的详细步骤及注意事项 #### 一、前言 本文档旨在详细介绍如何在 NetBeans 6.8 中配置 PHP 5.30 开发环境的过程。为了实现这一目标,我们需要借助 XAMPP 作为本地服务器环境,并对...
6. NetBeans配置指南:描述如何在NetBeans中配置MingW、GDB和MSYS,以便在IDE内使用。 通过这个整合包,开发者可以在Windows环境中搭建起一个完善的C/C++开发环境,实现从编写代码、编译到调试的完整流程,而且能够...
### 使用NetBeans IDE 6.8提升开发效率 #### 一、引言 随着软件开发技术的不断进步,集成开发环境(IDE)成为了提高开发者工作效率的重要工具之一。NetBeans IDE作为一款免费开源的IDE,凭借其强大的功能和易用性...
在本文中,我们将详细探讨如何在NetBeans 6.8集成开发环境中配置MySQL数据库,以便进行高效的数据库管理和开发工作。NetBeans作为一个强大的开源IDE,支持多种编程语言,并且集成了数据库管理功能,使得开发者能够在...
【作品名称】:基于Netbeans8.2 + MySql + JDK1.8实现的综合教务系统【课程设计】(课程设计报告+源码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实...
本文将详细介绍如何在NetBeans 6.8版本中配置MySQL数据库,以便进行数据库相关的开发工作。 首先,我们需要理解NetBeans与MySQL数据库之间的连接原理。MySQL是一种流行的开源关系型数据库管理系统,而NetBeans作为...
【标题】"Java实验工具2(netbeans-6.8m2-ml-javase-windows)" 是一个针对Windows平台的Java开发环境,基于NetBeans IDE的特定版本,即6.8 Milestone 2。这个工具包专为进行Java编程实验而设计,适合初学者和专业...
### NetBeans、Tomcat与MySQL配置详解 #### Tomcat安装及配置 1. **下载Tomcat**:访问[Tomcat官方网站](http://tomcat.apache.org/)进行下载,新手推荐使用Windows Installer版本,便于安装。 2. **安装路径**:...
### 在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架 #### 一、概述 在当今的企业级应用程序开发中,采用MVC(Model-View-Controller)架构模式的框架组合变得越来越普遍。其中,Struts2、Spring与Hibernate...
在本文中,我们将深入探讨如何使用Netbeans IDE进行JSF 2.0的开发,并结合Primefaces和JPA来创建高效、用户友好的Web应用程序。JSF(JavaServer Faces)是一种用于构建Java Web应用程序的MVC(模型-视图-控制器)...
在NetBeans 6中,支持JPA的集成使得开发者能够直接在IDE内进行数据库操作,大大提高了开发效率。 **J2EE(Java Platform, Enterprise Edition)**是Java技术的一个版本,专为构建企业级应用程序而设计。它包含一组...
NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建...NetBeans项目由一个活跃的开发社区提供支持, NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。
NetBeans IDE是一款开源的集成开发环境,由Sun Microsystems开发,主要用于Java应用程序的开发。NetBeans IDE支持多种编程语言,如Java、PHP、C++和HTML5等,并具备代码编写、调试、分析和单元测试等开发工具的功能...