1. 一对多的对象关系 customer and order
一个customer有多个订单
public class Customer {
private Set orders=new HashSet();
public Customer() {}
public Set getOrders() {
return this.orders;
}
public void setOrders(Set orders) {
this.orders = orders;
}
}
2. 一对一的对象关系
一个订单只能属于一个客户
public class Order {
private Customer customer;
public Order() {}
public Customer getCustomer() {
return this.customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
3. 当持久化对象时,应该考虑与它关联的对象.
添加一个新的客户对象
public void saveCustomer(Customer customer) throws Exception {
Connection con=null;
PreparedStatement stmt=null;
try {
con=getConnection();
con.setAutoCommit(false);
if(customer.getName()==null)
throw new BusinessException("");
long customerId=getNextId(con,"CUSTOMERS");
//首先向数据库添加customer对象
stmt=con.prepareStatement("insert into CUSTOMERS(ID,NAME,AGE) values(?,?,?)");
stmt.setLong(1,customerId);
stmt.setString(2,customer.getName());
stmt.setInt(3,customer.getAge());
stmt.execute();
//得到customer对象的所有订单,向数据库中添加
Iterator iterator =customer.getOrders().iterator();
while (iterator.hasNext() ) {
Order order=(Order)iterator.next();
if(order.getOrderNumber()==null)
throw new BusinessException("");
long orderId=getNextId(con,"ORDERS");
stmt=con.prepareStatement("insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID)values(?,?,?,?)");
stmt.setLong(1,orderId);
stmt.setString(2,order.getOrderNumber());
stmt.setDouble(3,order.getPrice());
stmt.setLong(4,customerId);
stmt.execute();
}
con.commit();
}catch(Exception e){
e.printStackTrace();
try{
con.rollback();
}catch(SQLException sqlex){
sqlex.printStackTrace(System.out);
}
throw e;
}finally{
try{
stmt.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
4. 删除customer对象时也应该考虑到这种关系
public void deleteCustomer(Customer customer) throws Exception {
Connection con=null;
PreparedStatement stmt=null;
try {
con=getConnection();
con.setAutoCommit(false);
//先删除订单
stmt=con.prepareStatement("delete from ORDERS where "
+"CUSTOMER_ID=?" );
stmt.setLong(1,customer.getId().longValue());
stmt.executeUpdate();
//然后删除客户对象
stmt=con.prepareStatement("delete from CUSTOMERS where "
+"ID=?" );
stmt.setLong(1,customer.getId().longValue());
stmt.executeUpdate();
con.commit();
}catch(Exception e){
try{
con.rollback();
}catch(SQLException sqlex){
sqlex.printStackTrace(System.out);
}
throw e;
}finally{
try{
stmt.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
分享到:
相关推荐
精通 Hibernate:Java 对象持久化技术详解 第2版 学习Hibernate必备得一本书
HibernateJava持久化技术的详细学习资料!
该ppt是根据孙老师的精通Hibernate一书学习总结的,使用hibernate3.x版本,提及部分与2.x中的不同之处(难免有不足之处,望大家指正)
基于Hibernate的Java对象持久化技术分析--农户征信管理平台的设计,包括论文,开题报告,文献综述,英文翻译,任务书,还有演讲的PPT,可作为毕业答辩用。。。本人建议还是好好学习一下。。
Hibernate经典,学习Javaweb开发必备
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。尚硅谷jpa学习路线图思维导图,涵盖了jpa框架从基础知识到高级应用...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
自学Java必备!我们为您推荐的高效Java学习路线 尊敬的用户,恭喜您着手学习Java编程语言!我们为您准备了一份高效的Java学习路线,助您快速掌握Java开发技能。...学习Java持久化框架,如Hibernate和MyBati
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
HIBERNATE与对象持久化 SPRING架构和面向方面编程 Struts+Hibernate+Spring中期项目实战 JSF框架 Struts2.0 Web Service和SOA架构 统一建模语言UML、JUDE 设计工具、Class 类图、类之间关系设计、CMMI 标准过程管理...
第四章 操纵持久化对象..................190 第五章 事务控制...191 第六章 高级映射...192 第七章 高级查询...196 HTML&java; script学习笔记.....................198 HTML: 超文本标记语言.......................
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。JPA必将...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
对象持久化理论: 什么是对象持久化:把对象里面的数据转存到外部的持久存储设备中(如数据库、磁盘等) 为什么要对象持久化: 1、内存断电后,数据就会消失 2、需要共享数据 3、内存空间有限 4、使数据...
把字节序列化保存到文件中,就可以做到持久化保存数据内容。 1.2 如何将对象数据序列化保存到文件 使用ObjectOutputStream完成序列化操作: Constructor: ObjectOutputStream(OutputStream out) Method: void ...
2. 课程学习:提供丰富的Java教程和学习资料,包括基础知识、面向对象编程、数据结构与算法等,涵盖了从入门到进阶的内容。3. 代码练习:支持在线编程练习和提交,帮助用户巩固所学知识并提升编程技能。4. 学习记录...