`
隐形的翅膀
  • 浏览: 484617 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java对象持久化学习二

阅读更多
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:Java 对象持久化技术详解 第2版 学习Hibernate必备得一本书

    精通HibernateJava对象持久化技术

    HibernateJava持久化技术的详细学习资料!

    精通Hibernate:java对象持久化技术

    该ppt是根据孙老师的精通Hibernate一书学习总结的,使用hibernate3.x版本,提及部分与2.x中的不同之处(难免有不足之处,望大家指正)

    基于Hibernate的Java对象持久化技术分析--农户征信管理平台的设计

    基于Hibernate的Java对象持久化技术分析--农户征信管理平台的设计,包括论文,开题报告,文献综述,英文翻译,任务书,还有演讲的PPT,可作为毕业答辩用。。。本人建议还是好好学习一下。。

    精通 Hibernate:Java 对象持久化技术详解(第2版

    Hibernate经典,学习Javaweb开发必备

    jpa学习路线图 Java持久层API

    JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。尚硅谷jpa学习路线图思维导图,涵盖了jpa框架从基础知识到高级应用...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    动力节点老杜推荐Java学习路线

    自学Java必备!我们为您推荐的高效Java学习路线 尊敬的用户,恭喜您着手学习Java编程语言!我们为您准备了一份高效的Java学习路线,助您快速掌握Java开发技能。...学习Java持久化框架,如Hibernate和MyBati

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    高级Java软件架构师学习计划

    HIBERNATE与对象持久化 SPRING架构和面向方面编程 Struts+Hibernate+Spring中期项目实战 JSF框架 Struts2.0 Web Service和SOA架构 统一建模语言UML、JUDE 设计工具、Class 类图、类之间关系设计、CMMI 标准过程管理...

    Java/JavaEE 学习笔记

    第四章 操纵持久化对象..................190 第五章 事务控制...191 第六章 高级映射...192 第七章 高级查询...196 HTML&java; script学习笔记.....................198 HTML: 超文本标记语言.......................

    java源码包2

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包4

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    黎活明老师讲解的JPA源码

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。JPA必将...

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    J2EE系统之-hibernate学习总结

    对象持久化理论: 什么是对象持久化:把对象里面的数据转存到外部的持久存储设备中(如数据库、磁盘等) 为什么要对象持久化: 1、内存断电后,数据就会消失 2、需要共享数据 3、内存空间有限 4、使数据...

    Java-使用序列化保存对象数据到文件学习总结

    把字节序列化保存到文件中,就可以做到持久化保存数据内容。 1.2 如何将对象数据序列化保存到文件 使用ObjectOutputStream完成序列化操作: Constructor:  ObjectOutputStream(OutputStream out) Method:  void ...

    JAVA毕业设计之springboot java学习平台项目(springboot完整源码+说明).zip

    2. 课程学习:提供丰富的Java教程和学习资料,包括基础知识、面向对象编程、数据结构与算法等,涵盖了从入门到进阶的内容。3. 代码练习:支持在线编程练习和提交,帮助用户巩固所学知识并提升编程技能。4. 学习记录...

Global site tag (gtag.js) - Google Analytics