`

hibernate onetomany 双向

 
阅读更多

建表语句:

DROP TABLE IF EXISTS `t_company`;
CREATE TABLE `t_company` (
  `companyId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `companyName` varchar(30) NOT NULL,
  PRIMARY KEY (`companyId`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gb2312;

INSERT INTO `t_company` VALUES ('1', 'Sun');
INSERT INTO `t_company` VALUES ('2', 'Apache');



DROP TABLE IF EXISTS `t_employee`;
CREATE TABLE `t_employee` (
  `employeeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `employeeName` varchar(15) NOT NULL,
  `cid` int(10) unsigned NOT NULL,
  PRIMARY KEY (`employeeId`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gb2312;

INSERT INTO `t_employee` VALUES ('1', 'Tom', '1');
INSERT INTO `t_employee` VALUES ('2', 'Summ', '1');
INSERT INTO `t_employee` VALUES ('3', 'Cat', '2');
INSERT INTO `t_employee` VALUES ('4', 'Vinylon', '1');
INSERT INTO `t_employee` VALUES ('5', 'Dog', '2');


Employee.java

@Entity
@Table(name = "t_employee")
public class Employee {

    private Integer employeeId;
    private String  employeeName;
    private Company company;
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Integer getEmployeeId() {
        return employeeId;
    }
    /**
     * @ManyToOne:多对一,cascade:级联
      * fetch = FetchType.LAZY,延迟加载策略,如果不想延迟加载可以用FetchType.EAGER
     */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cid")
    public Company getCompany() {
        return company;
    }
    public String getEmployeeName() {
        return employeeName;
    }
    public void setEmployeeId(Integer employeeId) {
        this.employeeId = employeeId;
    }
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
    public void setCompany(Company company) {
        this.company = company;
    }
}
Company.java

@Entity
@Table(name = "t_company")
public class Company {

    private Integer companyId;
    private String  companyName;
    private Set<Employee> employees;
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Integer getCompanyId() {
        return companyId;
    }
    /**
     * @OneToMany 与 OneToOne相似的也用mappedBy,参考了Employee
     * 
     */
    @OneToMany(mappedBy = "company",cascade=CascadeType.ALL)
    public Set<Employee> getEmployees() {
        return employees;
    }
    public String getCompanyName() {
        return companyName;
    }
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }
}
分享到:
评论

相关推荐

    Hibernate双向一对多经典实例

    **标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...

    Hibernate双向一对多

    标题"Hibernate双向一对多"指的是Hibernate框架中的一个重要关系映射概念,即在一个实体类中,一个实例可以与多个另一个实体类的实例相关联,而在另一个实体类中,每个实例也可以关联到该实体类的一个实例。...

    Hibernate的双向多对一

    在Hibernate中,这种关系可以通过`@ManyToOne`和`@OneToOne`注解实现单向映射,但双向映射则需要用到`@OneToMany`和`@ManyToOne`组合。 首先,我们来看一下双向多对一关系的基本结构。假设我们有两个实体类,一个是...

    Hibernate ORM - 一对多双向连接表关联关系

    “Hibernate ORM - 一对多双向连接表关联关系”这个标题指出我们要讨论的是Hibernate ORM框架中的一种特定数据库关联模型,即一对多的双向关联。在Hibernate中,ORM(对象关系映射)是一种技术,它允许我们用面向...

    hibernate双向一对多关联映射(注解版)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系映射方式,它模拟了数据库中的外键关联,使得一个实体可以拥有多个另一个实体的实例。在这个注解版的实现中,我们将深入探讨如何使用Hibernate的...

    hibernate多对多双向关联

    **标题解析:**“hibernate多对多双向关联” 在Java编程中,Hibernate是一个流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。"多对多双向关联"是Hibernate中一种关系映射类型,涉及两...

    hibernate表之间3种双向关联映射

    总结来说,Hibernate中的双向关联映射是对象关系映射的重要组成部分,包括双向多对多、双向一对多和双向一对一。理解并熟练运用这些映射方式,有助于开发者更好地实现Java应用程序与数据库间的交互,提高开发效率和...

    Hibernate双向关联代码示例

    **Hibernate双向关联详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本示例将深入探讨Hibernate中的双向关联,这是一种常见且重要的数据模型映射技术。 双向关联...

    Hibernate ORM - 一对多双向关联关系

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

    hibernate双向一对多增删查改的例子

    在Java的持久化框架Hibernate中,双向一对多关联是一种常见的数据模型关系,它涉及到两个实体类,一个实体可以有多个另一个实体的实例。本示例将深入探讨如何使用Hibernate进行双向一对多关系的增删查改操作。 首先...

    hibernate一对多,多对一,一对多双向关联

    “Hibernate 一对多,多对一,一对多双向关联”是指在Java持久化框架Hibernate中,实体间常见的三种关联关系。在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户...

    Hibernate Annotation 基于外键的一对多双向关联

    本文将深入探讨如何使用Hibernate注解实现基于外键的一对多双向关联。我们将通过具体实例来解析这个主题,并结合源码分析其工作原理。 首先,我们要明白一对多关联意味着一个实体可以拥有多个关联的实体。在数据库...

    Hibernate一对多双向自身关联demo代码

    在这个“Hibernate一对多双向自身关联demo代码”中,我们将深入理解如何实现一个实体类与其自身进行一对多的双向关联。这种关联在实际应用中常见于例如用户的朋友关系、员工的上下级关系等场景。 首先,让我们了解...

    如何使用Hibernate 双向 单-多 多-单 多-多 Hibernate.rar

    本教程将深入探讨如何使用Hibernate实现多表之间的双向关联,包括单-多、多-单、多-多关系。 **一、单-多关系** 在数据库设计中,单-多关系指的是一个实体可以与多个其他实体相关联。例如,一个学生可以属于多个...

    hibernate4.3.8的annotation及xml的一对多的双向案例

    本案例主要探讨的是Hibernate 4.3.8版本中如何使用注解和XML配置实现一对多的双向关联关系。这种关系在实际的业务场景中十分常见,例如一个用户可以有多个订单,一个订单对应一个用户。 首先,我们来看一下注解的...

    Hibernate 一对多双向映射及乐观锁使用

    **标题解析:** "Hibernate 一对多双向映射及乐观锁使用" 在Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够帮助开发者将数据库操作转化为面向对象的编程,简化了数据访问层的实现。"一对多"是...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    hibernate.rar

    本压缩包“hibernate.rar”包含了关于Hibernate框架如何实现三种主要关联关系的源代码示例:一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)。这些示例都是在Eclipse和MyEclipse开发环境中编写的...

    hibernate 映射-一对多双向

    标题中的“hibernate 映射-一对多双向”指的是在Java Hibernate框架中处理数据库关系映射中的一对多关联关系,并且这种关联是双向的。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用Java对象来表示数据库...

Global site tag (gtag.js) - Google Analytics