1 树状结构的设计

  1. package com.bjsxt.hibernate;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. import javax.persistence.CascadeType;
  7. import javax.persistence.Entity;
  8. import javax.persistence.FetchType;
  9. import javax.persistence.GeneratedValue;
  10. import javax.persistence.Id;
  11. import javax.persistence.JoinColumn;
  12. import javax.persistence.ManyToOne;
  13. import javax.persistence.OneToMany;
  14.  
  15. @Entity
  16. public class Org {
  17. private int id;
  18. private String name;
  19. private Set<Org> children = new HashSet<Org>();
  20. private Org parent;
  21. @Id
  22. @GeneratedValue
  23. public int getId() {
  24. return id;
  25. }
  26. public void setId(int id) {
  27. this.id = id;
  28. }
  29. public String getName() {
  30. return name;
  31. }
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35. @OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
  36. public Set<Org> getChildren() {
  37. return children;
  38. }
  39. public void setChildren(Set<Org> children) {
  40. this.children = children;
  41. }
  42.  
  43. @ManyToOne
  44. @JoinColumn(name="parent_id")
  45. public Org getParent() {
  46. return parent;
  47. }
  48. public void setParent(Org parent) {
  49. this.parent = parent;
  50. }
  51. }
  1. @Test
  2. public void testSave() {
  3. Org o = new Org();
  4. o.setName("总公司");
  5. Org o1 = new Org();
  6. o1.setName("分公司1");
  7. Org o2 = new Org();
  8. o2.setName("分公司2");
  9. Org o11 = new Org();
  10. o11.setName("分公司1下部门1");
  11. Org o12 = new Org();
  12. o12.setName("分公司1下部门2");
  13.  
  14. o.getChildren().add(o1);
  15. o.getChildren().add(o2);
  16. o1.getChildren().add(o11);
  17. o1.getChildren().add(o12);
  18. o11.setParent(o1);
  19. o12.setParent(o1);
  20. o1.setParent(o);
  21. o2.setParent(o);
  22.  
  23. Session session = sessionFactory.openSession();
  24. session.beginTransaction();
  25. session.save(o);
  26.  
  27. session.getTransaction().commit();
  28. session.close();
  29. }
  30. @Test
  31. public void testLoad() {
  32. testSave();
  33. Session session = sessionFactory.openSession();
  34. session.beginTransaction();
  35. Org o = (Org)session.load(Org.class, );
  36. print(o, );
  37. session.getTransaction().commit();
  38. session.close();
  39.  
  40. }
  41.  
  42. private void print(Org o, int level) { //输出
  43. String preStr = "";
  44. for(int i=; i<level; i++) { //缩进
  45. preStr += "----";
  46. }
  47. System.out.println(preStr + o.getName());
  48. for(Org child : o.getChildren()) {
  49. print(child, level+);
  50. }
  51. }

Course

  1. package com.bjsxt.hibernate;
  2.  
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.Id;
  6.  
  7. @Entity
  8. public class Course {
  9. private int id;
  10. private String name;
  11. @Id
  12. @GeneratedValue
  13. public int getId() {
  14. return id;
  15. }
  16. public void setId(int id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25.  
  26. }

score

  1. package com.bjsxt.hibernate;
  2.  
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.Id;
  6. import javax.persistence.JoinColumn;
  7. import javax.persistence.ManyToOne;
  8. import javax.persistence.Table;
  9.  
  10. @Entity
  11. @Table(name="score")
  12. public class Score {
  13. private int id;
  14. private int score;
  15. private Student student;
  16. private Course course;
  17. @Id
  18. @GeneratedValue
  19. public int getId() {
  20. return id;
  21. }
  22. public void setId(int id) {
  23. this.id = id;
  24. }
  25. public int getScore() {
  26. return score;
  27. }
  28. public void setScore(int score) {
  29. this.score = score;
  30. }
  31. @ManyToOne
  32. @JoinColumn(name="student_id")
  33. public Student getStudent() {
  34. return student;
  35. }
  36. public void setStudent(Student student) {
  37. this.student = student;
  38. }
  39.  
  40. @ManyToOne
  41. @JoinColumn(name="course_id")
  42. public Course getCourse() {
  43. return course;
  44. }
  45. public void setCourse(Course course) {
  46. this.course = course;
  47. }
  48.  
  49. }

Student

  1. package com.bjsxt.hibernate;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. import javax.persistence.Entity;
  7. import javax.persistence.GeneratedValue;
  8. import javax.persistence.Id;
  9. import javax.persistence.JoinColumn;
  10. import javax.persistence.JoinTable;
  11. import javax.persistence.ManyToMany;
  12.  
  13. @Entity
  14. public class Student {
  15. private int id;
  16. private String name;
  17. private Set<Course> courses = new HashSet<Course>();
  18.  
  19. @ManyToMany
  20. @JoinTable(name="score",
  21. joinColumns=@JoinColumn(name="student_id", referencedColumnName="id"),
  22. inverseJoinColumns=@JoinColumn(name="course_id", referencedColumnName="id")
  23. )
  24. public Set<Course> getCourses() {
  25. return courses;
  26. }
  27. public void setCourses(Set<Course> courses) {
  28. this.courses = courses;
  29. }
  30. @Id
  31. @GeneratedValue
  32. public int getId() {
  33. return id;
  34. }
  35. public void setId(int id) {
  36. this.id = id;
  37. }
  38. public String getName() {
  39. return name;
  40. }
  41. public void setName(String name) {
  42. this.name = name;
  43. }
  44.  
  45. }
  1. @Test
  2. public void testSave() {
  3. Student s = new Student();
  4. s.setName("zhangsan");
  5. Course c = new Course();
  6. c.setName("java");
  7. Score score = new Score();
  8. score.setCourse(c);
  9. score.setStudent(s);
  10.  
  11. Session session = sessionFactory.openSession();
  12. session.beginTransaction();
  13. session.save(s);
  14. session.save(c);
  15. session.save(score);
  16.  
  17. session.getTransaction().commit();
  18. session.close();
  19. }
  20. @Test
  21. public void testLoad() {
  22. testSave();
  23. Session session = sessionFactory.openSession();
  24. session.beginTransaction();
  25.  
  26. Student s = (Student)session.load(Student.class, );
  27. for(Course c : s.getCourses()) {
  28. System.out.println(c.getName());
  29. }
  30.  
  31. session.getTransaction().commit();
  32. session.close();
  33.  
  34. }

Hibernate 再接触 树状结构设计以及学生课程成绩表的设计的更多相关文章

  1. 通过学生-课程关系表,熟悉hive语句

    通过学生-课程关系表,熟悉hive语句 1.在hive中创建以下三个表. create table  student(Sno int,Sname string,Sex string,Sage int, ...

  2. Hibernate 再接触 悲观锁和乐观锁

    为什么取1248 二进制 CRUD 移位效率高 在并发和效率选择一个平衡点 一般不会考虑幻读 因为我们不会再一个事务里查询两次,(只能设置为seralizable) 悲观锁和乐观锁的前提是read-u ...

  3. Hibernate 再接触 一级缓存 二级缓存 查询缓存

    缓存 就是把本来应该放在硬盘里的东西放在内存里  将来存内存里读 一级缓存: session缓存 二级缓存: sessionFactory级别的   (适合经常访问,数据量有限,改动不大) 很多的se ...

  4. Hibernate 再接触 性能优化

    Sessionclear 否则session缓存里越来越多 Java有内存泄露吗? 在语法中没有(垃圾自动回收) 但是在实际中会有 比如读文件没有关什么的 1+N问题 解决方法:把fetch设置为la ...

  5. Hibernate 再接触 CRUD

    1.save 一对多双向 package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import jav ...

  6. Hibernate 再接触 多对多单向双向关联

    情景:一个老师可能有多个学生,一个学生也可能有多个老师 多对一单向: 例如老师知道自己教哪些学生,学生却不知道自己被哪些老师教 方法:使用第三张表 分别存两张表的id annotation Stude ...

  7. Hibernate 再接触 核心开发接口

    1.可以重载方法进行配置文件的指定 sessionFactory = new AnnotationConfiguration().configure("hibernate.xml" ...

  8. Hibernate 再接触 ID生成策略

    Xml 方法 在student.hbm.xml中 <generator class="uuid"></generator> 取值如下 1.identity: ...

  9. Hibernate 再接触 HQL

    Category.java package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence ...

随机推荐

  1. spark2.3.0 配置spark sql 操作hive

    spark可以通过读取hive的元数据来兼容hive,读取hive的表数据,然后在spark引擎中进行sql统计分析,从而,通过spark sql与hive结合实现数据分析将成为一种最佳实践.配置步骤 ...

  2. CS229 6.2 Neurons Networks Backpropagation Algorithm

    今天得主题是BP算法.大规模的神经网络可以使用batch gradient descent算法求解,也可以使用 stochastic gradient descent 算法,求解的关键问题在于求得每层 ...

  3. Solr DocValues详解

    前言: 在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticsearch用户,无疑来说是一个福音,这玩意的出现通过牺牲一定的磁盘空间带来的 ...

  4. 最小化安装CentOS 7后,图形界面的安装(GNOME、KDE等)

    安装图形化界面: 1.首先安装X(X Window System),命令为 yum groupinstall "X Window System" 2.检查一下我们已经安装的软件以及 ...

  5. iar stm32 启动代码片段分析

    今天查看了 iar 上面的启动文件,好奇堆栈指针到底是什么时候赋值的,所以就仔细的阅读了代码和相关手册,找到了答案. 首先,芯片启动后,会从ROM的首地址处进行执行,那么我们从 linker 里面找找 ...

  6. 'git status'不显示untracked files

    git status -uno git status --untracked-files=no

  7. Java编辑PDF写入文字 插入图片

    package com.test; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Font; import com.itex ...

  8. Maven项目jar包的依懒范围

  9. python中的update

    update()批量写入批量更新字典,举个例子: 1 a = { 2 "name":"dlrb", 3 "age":25, 4 " ...

  10. cookie、localStorage、sessionStorage和会话控制机制

    简介 cookie cookie的内容主要包括:名字Name.值Value.域Domain.路径Path.过期时间Expires/Max-Age.大小Size.HTTP.Secure.SameSite ...