hibernate03 映射关系

一面向对象主要研究什么?

答:类与类的关系。

  1. 继承:”is-a“的关系 人类和猪类—-不是继承关系 不满足is-a关系 学生类和大学生类—是继承关系 满足is-a关系
  2. 实现:类与接口(特殊类)
  3. 依赖:人与船属于依赖关系 A类 依赖 B类
  4. 关联:关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。
  5. 聚合:整体与部分可分割,是拥有关系,既has-a关系 组合:是contains-a关系,体现整体与部分不可分割

二 hibernate 中类与类的关系

  1. 一对一:就好比一个人只有一张身份证
  2. 一对多:就像那作者可以写多本书
  3. 多对多:比如一个班的学生有多科老师。然而每一个老师一般都有很多学生

一。一对一
hibernate的一对一关系的映射文件

  1. 首先需要在实体类加上对方的实体类对象 (在用户表里面加上身份证表的对象)(在身份证表里面加上用户表的对象)
    并且生成get()和set()方法
  2. 在映射文件的中添加在俩张表的关系一般是写在底部的(方便阅读)

 < one-to-one name="person" class="com.kz.entity.Person"></one-to-one>
 //name:在该表中的属性名(对方的实体类对象名)
 //class:对方实体类的路径     注意在俩个映射文件中都要写 主的一方需加上级联 cascade="all"

  1. 一对一的增删改查
  2. 查询
        Configuration cfg = new Configuration().configure("hibernate.cfg.xml");//读取配置文件 如果不写默认就是在src根目录下
        SessionFactory sf = cfg.buildSessionFactory();//构建SessionFactory会话工厂
        Session session = sf.openSession();//得到会话对象
        //根据身份证在到那一个人的名字
        Card c = (Card) session.get(Card.class, 4L);//找到id为4的身份证
        Person p=c.getPerson();//这个就是身份证id为4 的那个人
        //根据人找到那一张身份证
        Person person = (Person) session.get(Person.class,3L);//找到id为3的人
        Card c=person.getCard();//这个就是id为3的那张身份证对象

        session.close();//关闭会话对象
        sessionFactory.close();//关闭工厂
  1. 增删改 注意只要是对数据库进行了数据上的改动就必须写事务开启与提交事务
        Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
        SessionFactory sf = cfg.buildSessionFactory();
        Session session = sf.openSession();
        Transaction transaction = session.beginTransaction();//事务开始
        //1增加
        //1.1添加一个新人和卡
        Person p = new Person();
        p.setPname("拉登3");
        Card card = new Card();
        card.setCname("大王卡7");
        //相互认识
        p.setCard(card);
        card.setPerson(p);
        //添加 
        session.save(p);//因为级联所以只需要添加主的一方就好

        //1.2查人补卡
        Person person = (Person) session.get(Person.class,3L);
        Card card2 = new Card();
        card2.setCname("芒果卡");
        //相互认识
        person.setCard(card2);
        card2.setPerson(person);//因为person是持久层所以不需要写

        //1.3查卡补人  一般不会这么用 毕竟谁会人丢了卡没丢
        Card c = (Card) session.get(Card.class, 4L);
        Person p = new Person();
        p.setPname("三狗子");
        //相互认识
        p.setCard(c);
        c.setPerson(p);
        session.save(p);//因为级联的是主的一方 而需要写save

        //2删除 
        //2.1查人 删人删卡
        Person person = (Person) session.get(Person.class,6L);
        session.delete(person);
        //2.2查人 删卡
        Person person = (Person) session.get(Person.class,6L);
        person.setCard(null);
        session.delete(card);//断绝关系  主的一方断绝   如果不断绝是会连着卡一起删除的  因为在session里面存着person 然而person表中有card对象所以查出来的session中也有card 只要 person.setCard(null)之后就再删除person 就不会删除Card
        //2.3查卡 删人
        Card c = (Card) session.get(Card.class, 4L);
        Person person = c.getPerson();
        //断关系  主的一方断
        person.setCard(null);
        session.delete(person);

        //3修改
        //3.1查人修改卡
        Person person = (Person) session.get(Person.class,3L);
        Card c = person.getCard();
        c.setCname("医保卡");
        //session.update(c);可以省略  c是持久态对象

        //3.2查卡修改人
        Card c = (Card) session.get(Card.class, 2L);
        Person person = c.getPerson();
        //person持久态对象
        person.setPname("大白");

        //3.3查人修改人
        Person person = (Person) session.get(Person.class,3L);
        person.setPname("大白");

        //3.4查卡修改卡
        Card c = (Card) session.get(Card.class, 2L);
        c.setCname("医保卡");




        transaction.commit();//事务提交
        session.close();
        sf.close();

二。一对多
hibernate 一对多关系的映射文件

  1. 首先需要想清楚什么俩张表里面是是唯一的 ,就好比街道表与大区表,一条街道肯定只有一个大区,然而一个大区肯定不止一条街道。紧接着就设置大区表为主,街道表为辅。
  2. 主 在实体类里需要添加一个set集合 注意要加上set集合的get(),set()方法 并且给set集合初始化 否则会出现空指针异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值