- 浏览: 443812 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
前面介绍和总结了JPA的入门知识,也就是搭建环境和简单的使用了JPA的一个实例。现在再来总结下一些常见的关系(一对多和多对一的关系)。
在学习这些的时候,我们不得单单就学习他本身来学习,我们应该联系相关的一些知识来进行学习。比如Hibernate等
-------------------------------
例如我们用一个例子来开启JPA的一对多和多对一的学习。
比如你去当当网上买书籍,当当网就给你一个订单。
通过上面的业务活动描述你可以分析得出:一个订单可以包含一个或多个订单项.那么我们将将订单和订单项设计关系为(1:N)一对多的关系(排除0)。得出关系我们就使用JPA来实现这个关系(关于建立JPA和基本的配置我就不再说了,如果不明白请看JPA入门篇)。
首先建立订单实体类
订单项的实体类
下面看看测试类
总结:OneToMany或者其他的关系,在建立联系的时候,要注意理解关系维护端和关系被维护端
在学习这些的时候,我们不得单单就学习他本身来学习,我们应该联系相关的一些知识来进行学习。比如Hibernate等
-------------------------------
例如我们用一个例子来开启JPA的一对多和多对一的学习。
比如你去当当网上买书籍,当当网就给你一个订单。
通过上面的业务活动描述你可以分析得出:一个订单可以包含一个或多个订单项.那么我们将将订单和订单项设计关系为(1:N)一对多的关系(排除0)。得出关系我们就使用JPA来实现这个关系(关于建立JPA和基本的配置我就不再说了,如果不明白请看JPA入门篇)。
首先建立订单实体类
import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name="orders") public class Order { private String orderid; private Float amount = 0f; private Set<OrderItem> items = new HashSet<OrderItem>(); @Id @Column(length = 12) public String getOrderid() { return orderid; } public void setOrderid(String orderid) { this.orderid = orderid; } @Column(nullable = false) public Float getAmount() { return amount; } public void setAmount(Float amount) { this.amount = amount; } @OneToMany(cascade = { CascadeType.REFRESH, CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE },mappedBy ="order") //这里配置关系,并且确定关系维护端和被维护端。mappBy表示关系被维护端,只有关系端有权去更新外键。这里还有注意OneToMany默认的加载方式是赖加载。当看到设置关系中最后一个单词是Many,那么该加载默认为懒加载 public Set<OrderItem> getItems() { return items; } public void setItems(Set<OrderItem> items) { this.items = items; } /** *该方法用于向order中加order项 /* public void addOrderItem(OrderItem orderItem){ orderItem.setOrder(this);//用关系维护端来维护关系 this.items.add(orderItem); } }
订单项的实体类
import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class OrderItem { private Integer id; private String productName; private Float sellPrice = 0f; private Order order; @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(length = 40, nullable = false) public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } @Column(nullable = false) public Float getSellPrice() { return sellPrice; } public void setSellPrice(Float sellPrice) { this.sellPrice = sellPrice; } @ManyToOne(cascade = {CascadeType.MERGE,CascadeType.REFRESH }, optional = true) @JoinColumn(name="order_id")//这里设置JoinColum设置了外键的名字,并且orderItem是关系维护端 public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } }
下面看看测试类
import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.junit.BeforeClass; import org.junit.Test; import cn.itcast.bean.Order; import cn.itcast.bean.OrderItem; public class OneToManyTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void addOrder(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin(); // start transaction Order order = new Order(); order.setAmount(34f); order.setOrderid("00001"); //order中包含的OrderItem项OrderItem1,OrderItem2 OrderItem orderItem1 = new OrderItem(); orderItem1.setProductName("书"); orderItem1.setSellPrice(22f); order.addOrderItem(orderItem1); //add orderitem in order OrderItem orderItem2 = new OrderItem(); orderItem2.setProductName("篮球"); orderItem2.setSellPrice(100f); order.addOrderItem(orderItem2); em.persist(order); //persist order object em.getTransaction().commit(); //commit transaction em.close(); factory.close(); } }
总结:OneToMany或者其他的关系,在建立联系的时候,要注意理解关系维护端和关系被维护端
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2009最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 959在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 843最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 92651.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 828FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 722核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 965HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 735基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1199基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 987在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2149在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2178JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2192在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 34651.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1381java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4474在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3906在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3720简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8578Java EE 5平台引入了Java ... -
读取Properties文件的一些方法
2010-03-13 22:53 1122读取Properties文件常见的 ...
相关推荐
JPA_OneToMany学习教程JPA_OneToMany学习教程JPA_OneToMany学习教程JPA_OneToMany学习教程
JPA课程manyToMany OneToMany 等全部测试 注解, 有注释
Spring Boot,Maven和MySQL的JPA一对多关系示例 指南 先决条件 JDK 1.8或更高版本 Maven 3或更高版本 MySQL 5.6或更高版本 叠放 Spring Data JPA Sprint Boot MySQL 跑 mvn spring-boot:run
NULL 博文链接:https://lc2586.iteye.com/blog/721309
JPA实体映射对时间字段的处理,使用的JPA比较流行
这是JPA标签配置手册,从ORACLE官方得到的资料,里面对JPA所有的标签都进行详细的说明。 Index of Annotations • A o @AssociationOverride o @AssociationOverrides o @AttributeOverride o @AttributeOverrides ...
jpa之使用hibernate实现
学习hibernate必读,包括JPA2新特征和JPA2映射的神秘之旅两个pdf。
JPA教程JPA教程JPA教程JPA教程JPA教程
jpa jpa规范 jpa源码 jpa jpa规范 jpa源码
jpajpajpajpajpajpajpajpajpajpajpajpajpa
· 0. JPA视频_PPT及源码 · 1.... JPA视频_JPQL_ORDER BY 和 GROUP BY · 21. JPA视频_JPQL_关联查询 · 22. JPA视频_JPQL_子查询和内建函数 · 23. JPA视频_JPQL_DELETE和UPDATE · 24. JPA视频_整合Spring
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注
03_JPA详解_搭建JPA开发环境和全局事务介绍.zip
此资源集成了相关的JPA资源,包括JPA官方文档 JPA详解 JPA批注参考 JPA应用……
使用jpa映射关联和继承
这个demo同时整合了springboot+JPA+mybatis这个两个orm框架。
Spring data jpa 多表联查 一对多的关系和操作多表的操作步骤 客户:一家公司 联系人:这家公司的员工
1. 开发效率极⾼: 2. 成熟的语法结构: ...4. 成熟的框架和架构 常⻅的SQL性能问题,如何优雅处理? 2. 错综复杂的关联关系如何应对? 3. 万恶的LazyException本质是什么? 4. ⾼并发⾼性能要求的API服务要⽤JPA吗?