一对多的单向操作

    /**
     *     Cascade:
            Save-update
                在session.save/update一个对象的时候,级联操作关联对象,关联对象或者执行save语句或者执行update语句或者什么都不执行
            Delete
                在session.delete一个对象的时候,级联删除关联对象
            All
                Save-update和delete的结合
     */

    /**
     * 保存班级
     */
    @Test
    public void test1(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = new Classes();
        classes.setName("1班");
        classes.setDescription("111111111111班");
        session.save(classes);
        transaction.commit();
        session.close();
    }

    /**
     * 保存学生
     */
    @Test
    public void test2(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Student student = new Student();
        student.setName("学生1");
        student.setDescription("学生111111111111111");
        session.save(student);
        transaction.commit();
        session.close();
    }

    //级联操作
    /**
     * 保存班级的同时保存学生
     */
    @Test
    public void test3(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Student student = new Student();
        student.setName("111111");
        student.setDescription("班22222学生1");
        Student student2 = new Student();
        student2.setName("222222");
        student2.setDescription("班22222学生2");
        Classes classes = new Classes();
        classes.setName("班2");
        classes.setDescription("班22222222222");
        Set<Student> students = new HashSet<Student>();
        students.add(student);
        students.add(student2);
        classes.setStudents(students);
        session.save(classes);
        transaction.commit();
        session.close();
    }

    /**
     * 现有班级添加学生
     */
    @Test
    public void test4(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = (Classes) session.get(Classes.class, 2L);
        Student student = new Student();
        student.setName("aaaaaaaa");
        student.setDescription("bbbbbbbbbbbbb");
        classes.getStudents().add(student);
        transaction.commit();
        session.close();
    }

    /**
     * 更改学生的班级
     */
    @Test
    public void test5(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = (Classes) session.get(Classes.class, 1L);
        Student student = (Student) session.get(Student.class, 3L);
        classes.getStudents().add(student);
        transaction.commit();
        session.close();
    }

    /**
     * 解除关系
     */
    @Test
    public void test6(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = (Classes) session.get(Classes.class, 1L);
        Student student = (Student) session.get(Student.class, 3L);
        classes.getStudents().remove(student);
        transaction.commit();
        session.close();
    }

    /**
     * 接触班级与该班所有学生的关系
     */
    @Test
    public void test7(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = (Classes) session.get(Classes.class, 2L);
        classes.setStudents(null);

        transaction.commit();
        session.close();
    }

    /**
     * 删除班级
     * 删除班级级联删除学生
     */
    @Test
    public void test8(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = (Classes) session.get(Classes.class, 1L);
        session.delete(classes);
        transaction.commit();
        session.close();
    }
时间: 2024-11-18 00:49:38

一对多的单向操作的相关文章

数据结构之链表单向操作总结

链表是数据结构的基础内容之一,下面就链表操作中的创建链表.打印链表.求取链表长度.判断链表是否为空.查找结点.插入结点.删除结点.逆转链表.连接链表.链表结点排序等进行总结. 1.创建表示结点的类,因为链表操作中需要比较结点,因此结点需要实现comparable接口. public class Node implements Comparable<Node> { private Object data; private Node next; //构造函数 public Node() { thi

WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back).

WCF除了支持经典的请求应答(Request-Reply)模式外,还提供了什么操作调用模式,他们有什么不同以及我们如何在开发中使用这些操作调用模式.今天本节文章里会详细介绍.WCF分布式开发步步为赢(10):请求应答(Request-Reply).单向操作(One-Way).回调操作(Call Back).本文结构:[1]请求应答(Request-Reply).[2]单向操作(One-Way).[3]回调操作(Call Back).[4]示例代码分析.[5]总结.最后上传本文的示例代码. WCF

DjangoORM一对多&多对多操作

简要说明 通过操作对象的方式操作数据库 详细步骤 models.py的结构是: 如果models.py中外键定义没有写 related_name='student_teacher', 可以直接用 studentList = teacher.student_teacher.all() 可以改写成: teacher = Teacher.objects.get(id = 1) studentList = teacher.student_set.all() =======================

[WCF编程]10.操作:单向操作

一.单向操作概述 WCF提供了单向操作,一旦客户端调用,WCF会生成一个请求,但没有相关的应答信息返回给客户端.所以,单向操作是不能有返回值,服务抛出的任何异常都不会传递给客户端. 理想情况下,一旦客户端调用了一个单向操作,它只会在要求调用的一瞬间被阻塞.事实上,单向调用不等于异步调用.当单向调用到达服务端时,不会立即分发这些调用,而是将调用方法服务端的队列中,并在某个时间分发.这一过程要根据服务配置的并发模式行为而定.服务要放入到队列中的消息个数与哦诶只的管道及可靠性模式有关.如果队列消息的数

Django一对多,多对多操作

简要说明 Django里面的数据库操作O2O&M2M,一般归属于models管理 使用场景 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了).//两个表的数据一一对应 例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据. 一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择).//表1的数据可以在表2里面重复出现 例如:创建用户信息时候,需要选择一个用户类型[普通用户][金牌用户][

【SSH三大框架】Hibernate基础第七篇:一对多关联关系的操作

相对于上文的多对一关系,这里又说明下一对多的关联关系. 在上文中,我们描述了多对一的关系,在关系数据库中也是多对一的关系,并且还是一对多的关系.但是,仅仅如此是不够的,Hibernate是一种面向对象的结构,在Hibernate中仍然是多对一的关系,但是没有一对多,所以我们需要额外添加一对多的关系. 部门实体类:Department.java package cn.itcast.hibernate.domain; import java.util.Set; public class Depart

Hibernate逍遥游记-第5章映射一对多-01单向cascade、lazy

1. 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping 3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping > 6 7 <c

Hibernate学习笔记(四) — session的产生方式 与 一对多关系映射

一.session的创建 Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,但Session不是线程安全的. 每次openSession,产生的都是一个新的session,相当于创建一个新的连接.但是有很多时候,并不希望这样.比如在淘宝购物,在付账的一瞬间,至少有三件事情发生,转账,仓库数据变化,购物历史记录.而这三件事有必须在同一事务下.自然我们会联

一口一口吃掉Hibernate(五)——一对多单向关联映射

版权声明:本文为博主原创文章,未经博主允许不得转载.如需转载请声明:[转自 http://blog.csdn.net/xiaoxian8023 ] 在上一篇博客<一口一口吃掉Hibernate(四)--多对一单向关联映射>中,介绍了多对一的关联映射,今天就反过来说一下一对多的单向关联映射. 可能有人会对这2篇博客的题目有点混淆不清,跟日常说的关系有点不同.我们日常说的比如父子关系,夫妻关系都是说的双向关系,而现在讨论的则是单向关系,所以也就有了多对一和一对多的说法. 二者的关系其实很简单,只是