Hibernate教程04——类继承(子类、父类链接表)

Hibernate教程04——类继承(子类、父类链接表)

一、简介

每个类都生成一张表,父类保存公共数据,子类保存自己独有的数据,通过id进行关联。

父类(Animal)和子类(PigBird)均生成一张表,其中父类表中存放公共的属性,子类表中分别存放各自的属性字段,子表的主键均来自主表。如下表所示:

 

一、父类Tree和相关annotation的配置

@Entity

@Inheritance(strategy = InheritanceType.JOINED)

public class Tree {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "id")

private Long id;

private String name;

private String description;

 

@ManyToOne

private Tree parent;

 

@OneToMany

private List<Tree> children;

 

public Long getId() {

return id;

}

 

public void setId(Long id) {

this.id = id;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

public String getDescription() {

return description;

}

 

public void setDescription(String description) {

this.description = description;

}

 

public Tree getParent() {

return parent;

}

 

public void setParent(Tree parent) {

this.parent = parent;

}

 

 

 

public List<Tree> getChildren() {

return children;

}

 

public void setChildren(List<Tree> children) {

this.children = children;

}

}


二、子类Department

同前

三、子类menu

同前

四、测试类

同前

五、生成的表

 

 

六、表中的数据

 

图 1 数据库表department中的数据

 

图 2 数据库表menu中的数据

 

图 3 数据库表tree中的数据

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了使用Hibernate实现Java和数据库表的映射,需要进行以下步骤: 1. 创建Java,该必须包含一个默认构造函数,并且每个属性都必须有getter和setter方法。 2. 在Java上使用Hibernate注释,以指示Hibernate如何将该映射到数据库表。可以使用注释来指定表名、列名、主键、外键等信息。 3. 配置Hibernate,包括设置数据库连接、指定Hibernate所需的驱动程序、数据库方言等。 4. 使用Hibernate API创建数据访问对象(DAO),该DAO将提供CRUD(创建、读取、更新、删除)操作,可以使用Hibernate提供的现成的DAO实现或自己实现。 5. 在应用程序中使用DAO访问数据库。 下面是一个使用Hibernate实现Java和数据库表映射的示例: ``` @Entity @Table(name = "students") public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "email") private String email; // getters and setters } // DAO interface public interface StudentDao { void save(Student student); void update(Student student); void delete(Student student); List<Student> getAll(); Student getById(Long id); } // DAO implementation @Repository public class StudentDaoImpl implements StudentDao { @Autowired private SessionFactory sessionFactory; @Override public void save(Student student) { sessionFactory.getCurrentSession().save(student); } @Override public void update(Student student) { sessionFactory.getCurrentSession().update(student); } @Override public void delete(Student student) { sessionFactory.getCurrentSession().delete(student); } @Override public List<Student> getAll() { return sessionFactory.getCurrentSession() .createQuery("FROM Student", Student.class) .getResultList(); } @Override public Student getById(Long id) { return sessionFactory.getCurrentSession().get(Student.class, id); } } // usage public class Main { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); StudentDao studentDao = context.getBean(StudentDao.class); // create student Student student = new Student(); student.setName("John Doe"); student.setEmail("[email protected]"); // save student studentDao.save(student); // update student student.setEmail("[email protected]"); studentDao.update(student); // get student by id Student retrievedStudent = studentDao.getById(student.getId()); System.out.println(retrievedStudent); // delete student studentDao.delete(retrievedStudent); } } ``` 在这个示例中,我们创建了一个名为Student的Java,并使用Hibernate注释将其映射到数据库表students。我们还创建了一个StudentDao接口和其实现StudentDaoImpl,该实现使用Hibernate API访问数据库。最后,在Main中,我们使用Spring容器获取StudentDao实例,并使用它执行CRUD操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值