package com.ddwei.entity;

import java.util.Set;

import org.hibernate.Session;
import org.hibernate.Transaction; import com.ddwei.util.HibernateUtil; /**
* 建立关联关系后,
* 可以方便的从一个导航对象,关联到另一个导航对象!
* 注意关联方向:一对多
* @author weijingli
*
*/
public class Test { public static void main(String[] args) {
// add();
// show();
// updateGrade();
deleteStu();
} //增加班级学生信息
public static void add(){ Grade g = new Grade("java一班","java一班是一个好班");
Student stu1 = new Student("秦皇","男");
Student stu2 = new Student("汉武","男");
Student stu3 = new Student("唐宗","男");
g.getStudents().add(stu1);
g.getStudents().add(stu2);
g.getStudents().add(stu3);
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
session.save(g);
session.save(stu1);
session.save(stu2);
session.save(stu3);
tx.commit();
HibernateUtil.closeSession(session);
} //查询班级学生信息
public static void show(){ Session session1 = HibernateUtil.getSession();
Grade grade1 = (Grade) session1.get(Grade.class, 1);//得到java1班
System.out.println("班级名称为:"+grade1.getGname());
Set<Student> students = grade1.getStudents();
for(Student stu:students){
System.out.println("学生姓名为:"+stu.getSname());
}
HibernateUtil.closeSession(session1);
} //修改学生所在班级信息
public static void updateGrade(){ Grade grade2 = new Grade("java二班","java二班介绍");
Session session2 = HibernateUtil.getSession();
Transaction tx2 = session2.beginTransaction();
Student student1 = (Student) session2.get(Student.class, 1);
grade2.getStudents().add(student1);//java二班添加学号为1的学生
session2.save(grade2);
tx2.commit();
HibernateUtil.closeSession(session2);
} //删除学生信息
public static void deleteStu(){
Session session2 = HibernateUtil.getSession();
Transaction tx2 = session2.beginTransaction();
Student stu2 = (Student)session2.get(Student.class, 3);
session2.delete(stu2);
tx2.commit();
HibernateUtil.closeSession(session2);
} }

Hibernate课程 初探一对多映射2-7 测试-修改和删除学生信息的更多相关文章

  1. hibernate课程 初探一对多映射2-6 测试-添加和查询学生信息

    package com.ddwei.entity; import java.util.Set; import org.hibernate.Session; import org.hibernate.T ...

  2. Hibernate课程 初探一对多映射4-3 测试--信息查询

    建立双向一对多关系,既可以由一方查询多方信息,同样可以由多方查询一方信息 demo: //查询学生所在班级 public static void showGidByStudent(){ Session ...

  3. Hibernate课程 初探一对多映射3-4 双向多对一的测试

    1 单向多对一和单向多对一的区别 比如部门和员工,一个部门下有很多员工,如果只查一个员工属于哪个部门,就用单向的,如果还要查一个部门下的所有员工,就用双向的. 2 双向多对一的配置 除了单向xml和双 ...

  4. Hibernate课程 初探一对多映射3-3 单向多对一的测试

    public static void testManyToOne(){ Student stu1 = new Student("小明","男"); Studen ...

  5. Hibernate课程 初探一对多映射4-2 cascade级联属性

    1 级联属性:hibernate一方和多方设置关联关系,当一方发生相应修改时(见下表),多方不用进行显式修改,也能进行相应修改.   级联在一方和多方xml中都可以设置 属性值 含义和作用 all 对 ...

  6. hibernate课程 初探一对多映射2-5 创建持久化类并配置映射文件

    学习点: 1 一对多映射,一方 Grade.hbm.xml的写法: <hibernate-mapping> <class name="com.ddwei.entity.Gr ...

  7. Hibernate课程 初探一对多映射5-2 Eclipse添加数据库连接

    1 Eclipse新建java项目 2 Windows ==> show view == >other ==>Data source Explorer 3 左侧视图 database ...

  8. Hibernate课程 初探一对多映射4-1 inverse属性

    1 <Set>节点的inverse属性默认由one方来维护(默认值为false).将inverse属性修改为true则由多方来维护.

  9. Hibernate课程 初探一对多映射3-2 单向多对一的配置

    1 多方实体类中加入,一方类和getset方法 //多方定义一个一方的引用 private Grade grade; public Grade getGrade() { return grade; } ...

随机推荐

  1. hpp文件简介

    Boost库文件采用的.hpp的后缀,而不是分成两个文件,也就是”.h+.cpp”,之所以这样做是有理由的,首先就是与普通的C/C++头文件区分,另外一个原因就是使Boost库不需要预先编译,直接引用 ...

  2. winform 动态添加控件及事件

    for (int i = 0; i < 4; i++) { Button btn = new Button(); //btn.Name = dt.Rows[i]["ANDON_CONT ...

  3. CLH同步队列

    原文链接:https://blog.csdn.net/chenssy/article/details/60781148 AQS内部维护着一个FIFO队列,该队列就是CLH同步队列. CLH同步队列是一 ...

  4. 数据结构19: BF算法(普通模式匹配算法)

    判断两个串之间是否存在主串与子串的关系,这个过程称为串的模式匹配. 在串的模式匹配过程,子串 T 通常被叫做“模式串”. 普通的模式匹配(“BF”算法) 判断两个串是否存在子串与主串的关系,最直接的算 ...

  5. jvm与tomcat启动优化配置

    JVM 优化 Java 的内存模型分为: Young,年轻代(易被 GC).Young 区被划分为三部分,Eden 区和两个大小严格相同的 Survivor 区,其中 Survivor 区间中,某一时 ...

  6. hdu1028 Ignatius and the Princess III(递归、DP)

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  7. rpm命令相关

    ### .列出所有安装过的包 rpm -qa | grep sql ### .如何获得某个软件包的文件全名. rpm -q mysql ### .rpm包中的文件安装到那里 rpm -ql lrzsz ...

  8. esper(1)-窗口概述

    Time Window: Length Window: Time Batch Window: 带batch的是所有的都执行完后,在触发UpdateListener,如下边例子: public clas ...

  9. vue(1)安装

    1.安装node.js(https://nodejs.org/en/),我安装的是 v10.15.1 1).在nodejs安装路径下,新建node_global和node_cache两个文件夹 2). ...

  10. java——第十二章 异常处理和文本I/O

    1.异常处理: 使用try_throw_catch块模块 优点:将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来. 例子: package test; import java.u ...