为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate初探之一对多映射

  • set属性
    查看全部
  • @常用属性: cascade:设置级联关系 inverse:设置由哪一方维护关联关系 Ps:在hbm.xml文件中,type类型既可以指定Java数据类型,也可以指定Hibernate数据类型。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Test_Double.java——(下) //查询学生所在班级信息 public static void findGradeByStudent(){ Session session=HibernateUtil.getSession(); Student stu=(Student) session.get(Student.class, 5); System.out.println(stu.getSid()+","+stu.getSname()+","+stu.getSex()); Grade g=stu.getGrade(); System.out.println(g.getGid()+","+g.getGname()+","+g.getGdesc()); HibernateUtil.closeSession(session); } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Test_Double.java——(上) /** * 单向多对一(学生-->班级) * @author SEAN * 实际上已经建立了双向一对多,也称为双向多对一 * 既可以方便地由学生查找找到对应的班级信息,也可以方便地由班级查找到其所包含的学生信息 */ public class Test_ManyToOne { public static void main(String[] args) { // save(); findGradeByStudent(); } public static void save(){ Grade g=new Grade("C++一班","C++软件开发一班"); Student stu1=new Student("慕课女","女"); Student stu2=new Student("慕课男","男"); //设置关联关系 /*g.getStudents().add(stu1); g.getStudents().add(stu2);*/ stu1.setGrade(g); stu2.setGrade(g); Session session=HibernateUtil.getSession(); Transaction tx=session.beginTransaction(); session.save(g); session.save(stu1); session.save(stu2); tx.commit(); HibernateUtil.closeSession(session); } ... 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Student.hbm.xml <!-- 配置多对一关联关系 --> <many-to-one name="grade" class="com.imooc.entity.Grade" column="gid" cascade="all"></many-to-one> Ps:注意:在进行inverse、cascade属性操作时,只能对对应该对象操作才有效。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @配置双向关系 @Student.java //在多方定义一个一方的引用 private Grade grade; @Grade.java //在一方定义一个多发的集合 private Set<Student> students; @Grade.hbm.xml <!-- 配置一对多关联关系 --> <set name="students" table="student" inverse="true"> <key column="gid"></key> <one-to-many class="com.imooc.entity.Student"></one> </set> @Student.hbm.xml <!-- 配置多对一关联关系 --> <many-to-one name="grade" class="com.imooc.entity.Grade" column="gid"> </many-to-one> @输出:少了update语句,提高了性能。 Ps:Hibernate配置文件中的inverse属性表示反转,一般是在<set>节点中指定关联关系的控制方向,默认由one(即:inverse为false)方来维护,如果双方都来维护,对我们系统的性能是有影响的。在one方把inverse属性设置为‘true’,由many方来进行维护,在一对多的关联中,只能设置one方的inverse为true,这将有助于性能的改善。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • Java Hibernate SQL 的数据类型对应表
    查看全部
  • 单向多对一的配置
    查看全部
  • @Test_OneToMany.java——(下) // 修改学生信息 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);//第二个参数指的是ID号 g.getStudents().add(stu); session.save(g); tx.commit(); HibernateUtil.closeSession(session); } // 查询班级中包含的学生 public static void findStudentsByGrade() { Session session = HibernateUtil.getSession(); Grade grade = (Grade) session.get(Grade.class, 1); System.out.println(grade.getGname() + "," + grade.getGdesc()); Set<Student> students = grade.getStudents(); for (Student stu : students) { System.out.println(stu.getSname() + "," + stu.getSex()); } } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Test_OneToMany.java——(上) /** * 单向一对多关联关系(班级-->学生) * @author SEAN * 建立关联关系后,可以方便的从一个对象导航到另一个对象,注意关联的方向 */ public class Test { public static void main(String[] args) { // add(); // findStudentsByGrade(); // update(); delete(); } // 将学生添加到班级 public static void add() { Grade g = new Grade("Java二班", "Java软件开发一班"); Student stu1 = new Student("张三", "男"); Student stu2 = new Student("爱慕", "女"); // 如果希望在学生表中添加对应的班级编号,需要在班级中添加学生,建立关联关系 g.getStudents().add(stu1); g.getStudents().add(stu2); Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); // 多个关联表中,添加顺序其实这里没关系,因为update都是最后执行的。 session.save(stu1); session.save(stu2); session.save(g); tx.commit(); HibernateUtil.closeSession(session); } // 删除学生信息 public static void delete() { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Student stu = (Student) session.get(Student.class, 1); session.delete(stu); tx.commit(); HibernateUtil.closeSession(session); } ...
    查看全部
  • @HibernateUtil.java public class HibernateUtil { private static SessionFactory sessionFactory; private static Session session; static { // 创建Configuration对象,读取hibernate.cfg.xml文件,完成初始化 Configuration config = new Configuration().configure(); StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder() .applySettings(config.getProperties()); StandardServiceRegistry ssr = ssrb.build(); sessionFactory = config.buildSessionFactory(ssr); } // 获取SessionFactory public static SessionFactory getSessionFactory() { return sessionFactory; } // 获取Session public static Session getSession() { session = sessionFactory.openSession(); return session; } // 关闭Session public static void closeSession(Session session) { if (session != null) session.close(); } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Student.hbm.xml <?xml version="1.0"?> <hibernate-mapping> <class name="com.imooc.entity.Student" table="student"> <id name="sid" column="sid" type="java.lang.Integer"> <generator class="increment"></generator> </id> <property name="sname" type="java.lang.String"> <column name="sname" length="20" not-null="true"></column> </property> <property name="sex"> <column name="sex"></column> </property> </class> </hibernate-mapping> @Grade.java public class Grade implements Serializable { private int gid; private String gname; private String gdesc; //在一方定义一个多发的集合 private Set<Student> students =new HashSet<Student>(); //setter/getter } @Student.java public class Student implements Serializable { private int sid; private String sname; private String sex; //setter/getter } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @hibernate.cfg.xml <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">.</property> <property name="hibernate.connection.url"> <![CDATA[ jdbc:mysql://localhost:3306/imooc?useUnicode=true&characterEncoding=utf8 ]]> </property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <!-- 指定映射文件的路径 --> <mapping resource="com/imooc/entity/Grade.hbm.xml"></mapping> <mapping resource="com/imooc/entity/Student.hbm.xml"></mapping> </session-factory> </hibernate-configuration> 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @Grade.hbm.xml <?xml version="1.0"?> <hibernate-mapping> <class name="com.imooc.entity.Grade" table="grade"> <id name="gid" column="gid" type="java.lang.Integer"> <generator class="increment"></generator> </id> <property name="gname" type="java.lang.String"> <column name="gname" length="20" not-null="true"></column> </property> <property name="gdesc"> <column name="gdesc"></column> </property> <!-- 配置一对多关联关系 --> <set name="students" table="student"> <key column="gid"></key> <one-to-many class="com.imooc.entity.Student"></one> </set> </class> </hibernate-mapping> 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部

举报

0/150
提交
取消
课程须知
本课程主要讲解Java中Hibernate中的关联映射,需要对Hibernate基本用法、ORM的基本概念、单表映射等相关知识有一定的基础。
老师告诉你能学到什么?
1、Hibernate关联映射的类型 2、单向一对多关联的配置 3、单向多对一关联的配置 4、cascade和inverse属性的作用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!