-
00:48看截图查看全部
-
对于inverse属性的说明; 1、一方的hbm.xml文件的<set>节点的inverse属性指定了关联关系的控制方向,默认由one方来维护; 2、关联关系中,inverse="false"则为主动方,由主动方负责维护关联关系; 3、在一对多关联中,设置one方的inverse为true,这将有助于性能的改善。 [ 查看全文 ]查看全部
-
一、单向多对一关联 (1)简介 1.在己方(多方)表中的一个外键参照另一个表的主键 2.通过在多方持有一方的引用实现,需要在多方配置<many-to-one> (2)配置 1.在多方持久类定义一方的引用 private Grade grade;并getter,setter 2.在多方的映射文件中添加 <many-to-one name="指定对一方的引用,即一方引用所定义的属性grade" class="一方对应的持久化类,即关联实体类com.imooc.entity.Grade" cloumn="外键的列名gid" ></many-to-one> (3)测试 public static void save(){ Grade g=new Grade("Java一班", "Java软件开发一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //创建多对一的配置 s1.setGrade(g); s2.setGrade(g); Session s=HibernateUtil.getSession(); Transaction t=s.beginTransaction(); s.save(g); s.save(s1); s.save(s2); t.commit(); HibernateUtil.closeSession(s); } 二、双向多对一关联 (1)分别在持久化类中定义另一方的引用; 一方:private Set<Student>students=new HashSet<Student>();并setter,getter 多方:private Grade grade;并setter,getter; (2)关联关系配置 //一方 <set name="一方实体类定义的多方的引用,即多方属性Students" table="多方的表名Students"> <key column="关联外键的列gid"></key> <one-to-many class="多方实体类的全类名com.imooc.entity.Student" ></one> </set> //多方(同上略) (3)测试(同上略)查看全部
-
//单向多对一之添加学生信息 public static void save(){ Grade g=new Grade("Java一班", "Java软件开发一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //创建多对一的配置 s1.setGrade(g); s2.setGrade(g); Session session=HibernateUtil.getSession(); Transaction transaction=session.beginTransaction(); session.save(g); session.save(s1); session.save(s2); transaction.commit(); HibernateUtil.closeSession(session);查看全部
-
单向多对一的配置: 1.在多方持久类定义一方的引用 private Grade grade;并getter,setter 2.在多方的映射文件中添加 <many-to-one name="指定对一方的引用,即一方引用所定义的属性grade" class="一方对应的持久化类,即关联实体类com.imooc.entity.Grade" cloumn="外键的列名gid" ></many-to-one>查看全部
-
单向多对一关联: 1、多对一的关系和关系数据库中的外键参照关系最匹配,即在己方(多方)的表中的一个外键参照另一个表的主键; 2、通过在多方持有一方的引用实现,需要在“多”的一端使用<many-to-one>配置查看全部
-
一对多映射 一、简介 什么是一对多的关系呢? 如同班级与学生的关系,站在班级的角度看,班级为一方,学生为多方,这种关系是单向的。 如何实现一对多的关系呢? 1.在数据库中,可以通过添加主外键的关联,表现一对多的关系; 2.在java中,通过在一方持有多方的集合实现,即在“一”的一端中使用<set>元素表示持有“多”的一端的对象。 二、实例 (1)创建HibernateUtil工具类 1.hibernate初始化 2.获取sessionFactory和session对象 3.关闭session对象 (2)在MySQL中创建表 1.创建班级表 2.创建学生表 (3)创建持久化类和映射文件并配置单向一对多关系 a.持久化类 1.创建学生持久化类 2.创建班级持久化类(在一方定义一个多方集合) b.配置映射文件 1.班级映射文件(配置单向一对多关系) 2.学生映射文件 3.hibernate.cfg.xml中指定映射文件、 (4)测试 1.添加和查询学生信息 2.修改和删除学生信息查看全部
-
public static void delete(){ //获取对话 Session session=HibernateUtil.getSession(); // 开启事务 Transaction tx=session.beginTransaction(); //获取学生信息2 Student stu=(Student) session.get(Student.class, 2); //删除学生 如果修改,先创建班级信息g,在将获得的学生信息添加最后 保存session.save(g); session.delete(stu); //提交事务 tx.commit(); //关闭事物 HibernateUtil.closeSession(session); } //修改学生信息 public static void update(){ Grade g=new Grade("Java二班","Java软件开发二班"); Session session=HibernateUtil.getSession(); Transaction tx=session.beginTransaction(); Student stu=(Student) session.get(Student.class, 1); g.getStudents().add(stu); session.save(g); tx.commit(); HibernateUtil.closeSession(session);查看全部
-
//添加学生信息 public static void add(){ Grade g=new Grade("java一班","java软件开发"); Student s1=new Student("李四", "男"); Student s2=new Student("小月","女"); g.getStu().add(s1); g.getStu().add(s2); Session s=HibernateUtil.getSession(); Transaction t=s.beginTransaction(); s.save(g); s.save(s1); s.save(s2); t.commit(); HibernateUtil.closeSession(s); } //通过班级获取学生信息 public static void getStuByGrade(){ Session s=HibernateUtil.getSession(); Grade g=(Grade) s.get(Grade.class, 1); System.out.println("班级:"+g.getGname()+"班级信息:"+g.getGdesc()); Set<Student> students=g.getStu(); for (Student stu:students) { System.out.println(stu.getSname()+" "+stu.getSex()); } }查看全部
-
inverse在哪个文件中配置中设置关系one-many为true说明不需要用那个文件保持关系 cascade为查看全部
-
cascade属性 级联 用于自动持久化对象查看全部
-
inverse属性查看全部
-
导航 关联方向,只能通过班级查学生,而不能通过学生知道班级查看全部
-
配置单向的一对多关联关系查看全部
-
设定连接数据库时指定的字符集查看全部
举报
0/150
提交
取消