`

Hibernate处理一对多关系的三种办法

阅读更多

多对一单向(数据库设计,多在在多方设计外键)

     数据库设计:主键列不可分,联合主键不可有部分依赖,不能存在传递依赖

     注解中在多方的类中加入一个"一方"的类,然后在方法之上加上@ManyToOne

     XML中在多方的XML中设置<many-to-one name="一方的字段名" column="具体的外键名字">

 

 

注:在数据库中要生成的表要改名字,可以用@Table(name="")

第一种方法(一共会生成三张表,两张实体表,一张关系表)

            多端:(生成一张表,存在一个外键comp_id

@Entity()

public class Flight implements Serializable {

    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )

    @JoinColumn(name="COMP_ID")

    public Company getCompany() {

        return company;

    }

    ...

}

        一端:

@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)

   publicSet<Student> getStudent() {

      returnstudent;

   }

   publicvoidsetStudent(Set<Student> student) {

      this.student= student;

   }

第二种方法:(效果同第一种一样)

@Entity()

public class Flight implements Serializable {

    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity=CompanyImpl.class )

    @JoinColumn(name="COMP_ID")

    public Company getCompany() {

        return company;

    }

    ...

}

 

public interface Company {

    ...

第三种方法

@Entity()

public class Flight implements Serializable {

    @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )

    @JoinTable(name="Flight_Company",

        joinColumns = @JoinColumn(name="FLIGHT_ID"),

        inverseJoinColumns = @JoinColumn(name="COMP_ID")

    )

    public Company getCompany() {

        return company;

    }

    ...

}

分享到:
评论

相关推荐

    数据库与Hibernate教案

    - 一对一、一对多、多对一、多对多关联映射的配置和实现,包括集合类型如List、Set、Map的使用。 -懒加载和立即加载策略,以及如何优化关联加载性能。 4. **AJAX插件应用**: - AJAX基础:理解异步JavaScript和...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     7.3 映射一对多双向自身关联关系  7.4 改进持久化类  7.5 小结  7.6 思考题 第8章 通过Hibernate操纵对象(上)  8.1 Java对象在JVM中的生命周期  8.2 理解Session的缓存  8.2.1 Session的缓存的作用  ...

    Hibernate编程代码

    Hibernate通过XML映射文件(或注解)定义对象与数据库表的映射关系,包括主键生成策略、一对一、一对多、多对一和多对多关系映射。 6. **HQL与 Criteria查询** Hibernate提供了两种查询方式:HQL(Hibernate ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     7.3 映射一对多双向自身关联关系  7.4 改进持久化类  7.5 小结  7.6 思考题 第8章 通过Hibernate操纵对象(上)  8.1 Java对象在JVM中的生命周期  8.2 理解Session的缓存  8.2.1 Session的缓存的作用  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     7.3 映射一对多双向自身关联关系  7.4 改进持久化类  7.5 小结  7.6 思考题 第8章 通过Hibernate操纵对象(上)  8.1 Java对象在JVM中的生命周期  8.2 理解Session的缓存  8.2.1 Session的缓存的作用  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     7.3 映射一对多双向自身关联关系  7.4 改进持久化类  7.5 小结  7.6 思考题 第8章 通过Hibernate操纵对象(上)  8.1 Java对象在JVM中的生命周期  8.2 理解Session的缓存  8.2.1 Session的缓存的作用  ...

    hibernate延迟加载技术详细解

    通常,在多对多或者一对多的关系中,延迟加载能够避免 N+1 查询问题。本文将详细探讨 Hibernate 的各种延迟加载策略及其应用场景。 #### 二、Fetching 策略 Fetching 策略定义了 Hibernate 在执行查询时如何获取...

    错误及解决方案.pdf

    mappedBy属性用于指定双向一对多关系中的被拥有端。在一个双向关系中,一个实体指向另一个实体,而被拥有端会使用mappedBy属性来指出它是由哪个类映射。这是解决在双向关联中防止多表更新问题的一种常见方法。 知识...

    ssh框架资源汇总

    3. Hibernate教程:实体类定义、映射文件配置、Session工厂与Session的使用、CRUD操作、一对多、多对一、多对多的关系映射等。 4. SSH整合:如何将三个框架配置到一起,包括web.xml、struts.xml、spring配置文件的...

    java面试宝典

    (如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101、如何优化Hibernate? 23 102、Struts工作机制?为什么要使用Struts? 23 103、Struts的validate框架是如何验证的...

    java面试题

    (如:一对多、多对多的关系) 60 71.9. 说下Hibernate的缓存机制 60 71.10. Hibernate的查询方式 60 71.11. 如何优化Hibernate? 61 71.12. Hibernate和spring中常出现的几个异常 61 71.13. Hibernate与jdbc的联系 62...

    SSH框架整合方法.docx

    SSH框架整合是一个常见的Java Web开发...总之,SSH框架整合涉及多个层次的配置和调整,需要对各个框架有深入理解,并能熟练处理集成过程中可能出现的问题。通过正确配置和调试,可以构建出高效、可维护的Java Web应用。

    最全的SSH框架教程

    Hibernate则是一个对象关系映射(Object-Relational Mapping, ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。Hibernate通过XML或注解配置,将Java类与数据库表关联起来,实现了数据的...

    一种基于hebernate乐观锁的信息系统开发模型 (2012年)

    Hibernate是一种流行的Java对象关系映射(ORM)框架,它用于将Java对象映射到数据库的表结构上,并且提供了对象数据库管理的机制。乐观锁是Hibernate框架中用来处理并发数据问题的一种策略。乐观锁假设多个事务在...

    东南融通面试题 内部

    - Hibernate负责对象关系映射,实现对数据库的操作。 - 两者通过Spring管理事务、配置环境等方式进行整合。 #### Spring框架 1. **Spring中FactoryBean与BeanFactory的区别:** - `BeanFactory`是Spring的核心...

    最新Java面试宝典pdf版

    12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托...

    Java常见异常

    在Java编程中,异常处理是不可或缺的一部分,它帮助开发者识别并修复程序运行时可能出现的问题。以下是一些Java中常见的异常及其解决办法: 1. **Caused by: line 1:188: expecting CLOSE, found 'null'** 这个...

Global site tag (gtag.js) - Google Analytics