ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:626.40KB ,
资源ID:9375171      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9375171.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JavaEE之JPA关系操作.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JavaEE之JPA关系操作.docx

1、JavaEE之JPA关系操作实验5. JPA关系操作实验内容建立EJB项目,实现双向1-N关联。一张订单中存在一个或多个订购项。One方存在与many方关系定义,而many方也存在与one方关系的定义,这样的关系称为双向关系。代码上体现为one方有一个集合属性指向many方,而many方也有一个属性指向one方。建立一个EJB项目,实现上述关系。生成实体类:Order(one方)与OrderItem(many方);实现添加订单功能:显示订单列表;删除订单;修改订单;建立实体Bean,并生成对实体进行操作的会话Bean,能够完成基本的增删改查操作,编写Web客户端程序进行测试。实验目的 掌握实体

2、类之间的关系的实现; 能够通过JPA对具有关系的实体类进行操作; 能够对具有关系的实体进行复杂的查询。实验介绍(整体与本实验) 本试验要求学生已经掌握实体类的生成过程,以及简单Java持久性API的用法。环境要求服务器:Jboss 6.0集成开发环境: MyEclipse8.6数据库:MySql及其驱动程序实验指导步骤1:建立EJB项目,并设计实体Bean、会话Bean1. 建立EJB项目,如图5-1所示。图5-12. 输入项目名称,并单击下一步,如图5-2所示。图5-23. 设置JPA persistence,完成后单击finsh,如图5-3所示。图5-34. 生成项目结构如图5-4所示。

3、图5-45. 修改persistence.xm文件,如图5-5、图5-6所示。图5.5 图5.66. persistence.xml文件内容如下: java:/MySqlDS 7. 在src下建立三个包,结构如图5-7所示。图5.7a) 在包cn.edu.ejb3.bean下设计两个实体Bean:Order.java、OrderItem.java代码如下:Order.java:package cn.edu.ejb3.bean;import java.io.Serializable;import java.util.HashSet;import java.util.Date;import jav

4、a.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.OrderBy;import javax.persistence.Table;import javax.persi

5、stence.Temporal;import javax.persistence.TemporalType;EntityTable(name = Orders)public class Order implements Serializable private static final long serialVersionUID = 4970325922198249712L; private Integer orderid; private Float amount; private Set orderItems = new HashSet(); private Date createdate

6、; Id GeneratedValue public Integer getOrderid() return orderid; public void setOrderid(Integer orderid) this.orderid = orderid; public Float getAmount() return amount; public void setAmount(Float amount) this.amount = amount; OneToMany(mappedBy=order,cascade = CascadeType.ALL, fetch = FetchType.LAZY

7、) OrderBy(value = id ASC) public Set getOrderItems() return orderItems; public void setOrderItems(Set orderItems) this.orderItems = orderItems; Temporal(value=TemporalType.TIMESTAMP) public Date getCreatedate() return createdate; public void setCreatedate(Date createdate) this.createdate = createdat

8、e; public void addOrderItem(OrderItem orderitem) if (!this.orderItems.contains(orderitem) this.orderItems.add(orderitem); orderitem.setOrder(this); public void removeOrderItem(OrderItem orderitem) if (this.orderItems.contains(orderitem) orderitem.setOrder(null); this.orderItems.remove(orderitem); /*

9、 * 返回对象的散列代码值。该实现根据此对象 * 中 orderid 字段计算散列代码值。 * return 此对象的散列代码值。 */ Override public int hashCode() int hash = 0; hash += (this.orderid != null ? this.orderid.hashCode() : 0); return hash; /* * 确定其他对象是否等于此 Order。当且仅当 * 参数不为 null 且该参数是具有与此对象相同 orderid 字段值的 Order 对象时, * 结果才为 true。 * param 对象,要比较的引用对象

10、* 如果此对象与参数相同,则 return true; * 否则为 false。 */ Override public boolean equals(Object object) if (!(object instanceof Order) return false; Order other = (Order)object; if (this.orderid != other.orderid & (this.orderid = null | !this.orderid.equals(other.orderid) return false; return true; /* * 返回对象的字符串表

11、示法。该实现根据 orderid 字段 * 构造此表示法。 * return 对象的字符串表示法。 */ Override public String toString() return this.getClass().getName()+ orderid= + orderid + ; OrderItem.java: package cn.edu.ejb3.bean;import java.io.Serializable;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persi

12、stence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;Entitypublic class OrderItem implements Serializable private static final long serialVersionUID = -1166337687856636179L; private Integer id; privat

13、e String productname; private Float price; private Order order; public OrderItem() public OrderItem(String productname, Float price) this.productname = productname; this.price = price; Id GeneratedValue public Integer getId() return id; public void setId(Integer id) this.id = id; Column(length=100,

14、nullable=false) public String getProductname() return productname; public void setProductname(String productname) this.productname = productname; public Float getPrice() return price; public void setPrice(Float price) this.price = price; ManyToOne(cascade=CascadeType.REFRESH, optional=false) JoinCol

15、umn(name = order_id) public Order getOrder() return order; public void setOrder(Order order) this.order = order; /* * 返回对象的散列代码值。该实现根据此对象 * 中 id 字段计算散列代码值。 * return 此对象的散列代码值。 */ Override public int hashCode() int hash = 0; hash += (this.id != null ? this.id.hashCode() : super.hashCode(); return has

16、h; /* * 确定其他对象是否等于此 OrderItem。当且仅当 * 参数不为 null 且该参数是具有与此对象相同 id 字段值的 OrderItem 对象时, * 结果才为 true。 * param 对象,要比较的引用对象 * 如果此对象与参数相同,则 return true; * 否则为 false。 */ Override public boolean equals(Object object) if (!(object instanceof OrderItem) return false; OrderItem other = (OrderItem)object; if (thi

17、s.id != other.id & (this.id = null | !this.id.equals(other.id) return false; return true; /* * 返回对象的字符串表示法。该实现根据 id 字段 * 构造此表示法。 * return 对象的字符串表示法。 */ Override public String toString() return this.getClass().getName()+ id= + id + ; b) 设计SessionBean。在cn.edu.ejb3 下设计接口OrderDAO,代码如下:package cn.edu.ejb

18、3;import java.util.List;import cn.edu.ejb3.bean.Order;public interface OrderDAO /* * 添加一个订单 * */ public void insertOrder(Order order); /* * 获取指定订单 * param orderid 订单号 * return */ public Order getOrderByID(Integer orderid); /* * 获取所有订单 * return */ public List getAllOrder();c) 在cn.edu.ejb3.impl 下设计实现类

19、:OrderDAOBean,代码如下:package cn.edu.ejb3.impl;import java.util.List;import javax.ejb.Remote;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import javax.persistence.Query;import cn.edu.ejb3.OrderDAO;import cn.edu.ejb3.bean.Order;StatelessRe

20、mote (OrderDAO.class)public class OrderDAOBean implements OrderDAO PersistenceContext protected EntityManager em; public void insertOrder(Order order) em.persist(order); public Order getOrderByID(Integer orderid) Order order = em.find(Order.class, orderid); order.getOrderItems().size(); /因为是延迟加载,通过执

21、行size()这种方式获取订单下的所有订单项 return order; SuppressWarnings(unchecked) public List getAllOrder() Query query = em.createQuery(select DISTINCT o from Order o inner join fetch o.orderItems order by o.orderid); return (List) query.getResultList(); 8. 添加jar文件,具体操作如图5-8、图5-9所示。图5-8图5-9选择%JBOSS_HOME%client下所有ja

22、r文件,然后单击打开。如图5-10、图5-11所示。图5-10图5-11 注意:把jar文件“mysql-connector-java-5.1.8-bin.jar”放入%JBOSS_HOME%serverdefaultlib下。步骤2:创建客户端1. 右单击package视图空白区域,如图5-12所示,选择【New】-【Web Project】,弹出如图5-13所示窗口,输入项目名称。图5-12图5-132. 右单击项目名“EntityClient”,如图5-14所示,选择【Build Path】-【Configure Build Path】,弹出如图5-15所示窗口。图5-14图5-153.

23、 具体操作如图5-15、图5-16所示。图5-16 4. 在图5-16上单击OK,弹出如图5-17所示窗口。图5-175. 在图5-17上单击OK即可。6. 设计jsp页面,展开EntityClient项目,右单击【WebRoot】,如图5-18所示,选择【New】-【JSP】,弹出图5-19所示窗口。图5-18图5-197. 在图5-19所示窗口输入文件名,单击Finish即可。test.jsp文件内容如下:% try InitialContext ctx = new InitialContext(); OrderDAO orderdao = (OrderDAO) ctx.lookup(Or

24、derDAOBean/remote); Order neworder = new Order(); neworder.setCreatedate(new Date(); neworder.addOrderItem(new OrderItem(笔记本电脑, new Float(13200.5); neworder.addOrderItem(new OrderItem(U盘, new Float(620); neworder.addOrderItem(new OrderItem(台式电脑,new Float(6800.5); neworder.setAmount(new Float(13200.5

25、+620); orderdao.insertOrder(neworder); List list = orderdao.getAllOrder(); for(Order od : list) out.println(=订单号:+ od.getOrderid() +=); for(OrderItem item : od.getOrderItems() out.println(订购产品:+ item.getProductname() +); catch (Exception e) out.println(e.getMessage(); %步骤3:部署数据源,1. 数据源配置文件mysql-ds.xml如下:!- Datasource config

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1