`

Hibernate annotation 的各种关系

 
阅读更多

转的:

 

一、@OneToOne

Java代码   收藏代码
  1. @Entity   
  2. public   class  User{  
  3.     private  Address address;  
  4.   
  5.     @OneToOne   
  6.     public  Address getAddress() {  
  7.         return  address;  
  8.     }  
  9.   
  10.     public   void  setAddress(Address address) {  
  11.         this .address = address;  
  12.     }  
  13. }  
  14.   
  15. @Entity   
  16. public   class  Address{  
  17.     private  User user;  
  18.   
  19.     @OneToOne (mappedBy =  "address" )  
  20.     public  User getUser() {  
  21.         return  user;  
  22.     }  
  23.   
  24.     public   void  setUser(User user) {  
  25.         this .user = user;  
  26.     }  
  27.   
  28. }  


1、两边都定义了@OneToOne,但都没有定义mappedBy,则user和address表都会生成到对方的外键,双方都是这个关系的拥有者。 
2、两边都定义了@OneToOne,如果user定义了mappedBy,则在address表生成到user的外键,address是这个关系的拥有者;如果address定义了mappedBy,则在user表生成到address的外键,user是这个关系的拥有者。 
二、@ManyToOne和@OneToMany 


Java代码   收藏代码
  1. @Entity   
  2. public   class  Employee {  
  3. private  Department department;  
  4.   
  5. @ManyToOne   
  6. public  Department getDepartment() {  
  7. return  department;  
  8. }  
  9.   
  10. public   void  setDepartment(Department department) {  
  11. this .department = department;  
  12. }  
  13. }  
  14.   
  15. @Entity   
  16. public   class  Department {  
  17. private  Set<Employee> employees =  new  HashSet<Employee>();  
  18.   
  19. @OneToMany (mappedBy= "department" )  
  20. public  Collection<Employee> getEmployees() {  
  21. return  employees;  
  22. }  
  23. public   void  setEmployees(Collection<Employee> employees) {  
  24. this .employees = employees;  
  25. }  
  26. }  

 

如果只写了@manytoone,不写其他配置,那么,会生成3张表,其中一张为关系表(默认为多对多)

所以最好是加上@JoinColumn(name="**id")


@ManyToOne中Many指的是本类(也就是声明@ManeyToOne的类),One是指关联类,也就是To前边的对应本类,后边的对应关联类。如果方法返回的是单数关联类则定义@ManyToOne,例如: 

Java代码   收藏代码
  1. @ManyToOne   
  2. public  Department getDepartment() {  
  3. return  department;  
  4. }  

方法返回的是Department,为单数关联类,对应@ManyToOne中的One; 
如果返回的是复数关联类则定义@OneToMany,例如: 
Java代码   收藏代码
  1. @OneToMany (mappedBy= "department" )  
  2. public  Collection<Employee> getEmployees() {  
  3. return  employees;  
  4. }  

方法返回的是Collection<Employee>,复数关联类,对应@OneToMany中的Many。其中定义mappedBy的是@OneToMany,也就是说One这一方是关系的拥有者。Many一方的表中生成到关联类的外键。 

三、@ManyToMany 

Java代码   收藏代码
  1. @Entity   
  2. public   class  Book {  
  3. private  Set authors =  new  HashSet<Author>();  
  4.   
  5. @ManyToMany   
  6. public  Set<Author> getAuthors(){  
  7. return  authors;  
  8. }  
  9.       
  10. Public void  setAuthors(Set<Author> authors){  
  11.    This.authors = authors;  
  12. }  
  13. }  
  14.   
  15. @Entity   
  16. public   class  Author {  
  17. private  Set books =  new  HashSet<Book>();  
  18.   
  19.   
  20. @ManyToMany (mappedBy= "authors" )  
  21. public  Set<Book> getBooks(){  
  22. return  books;  
  23. }  
  24.   
  25. Public void  setBooks(Set<Book> books){  
  26.    This.books = books;  
  27. }  
  28. }  

@ManyToMany会生成中间表,具体表名和字段可以通过@AssociationTable来定义,默认的就可以了,同样关系的非拥有者,需要定义mappedBy属性。 

分享到:
评论

相关推荐

    Hibernate Annotation jar

    现在我们公司在做web项目的时候,已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的...

    hibernate annotation hibernate3

    在Java开发领域,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇将深入探讨Hibernate 3版本中的注解使用,帮助开发者理解如何利用注解进行数据持久化,提高开发效率。 一、...

    hibernate annotation 中文文档

    《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...

    Hibernate Annotation 中文文档

    随着技术的发展,Hibernate Annotation逐渐成为主流,因为它提供了更直观、更简洁的方式来映射对象关系模型(ORM)。这篇文档主要讨论的是Hibernate Annotation的使用方法,以及它如何替代传统的XML配置文件(*.hbm....

    Hibernate Annotation库

    这个jar文件包含了Hibernate的注解API,提供了各种注解如`@Entity`、`@Table`、`@Id`、`@GeneratedValue`等,用于声明实体类和它们在数据库中的表对应关系,以及主键生成策略。例如,`@Entity`注解标记一个类为...

    最全的Hibernate Annotation API文档

    在Hibernate中,注解(Annotation)是一种声明式的方法,用于配置实体类、属性以及它们与数据库表之间的映射关系。本文将深入探讨“最全的Hibernate Annotation API文档”中的关键知识点。 一、实体类(Entity) 在...

    Hibernate Annotation 学习笔记

    《Hibernate Annotation 学习笔记》 在Java的持久化框架中,Hibernate以其强大的功能和易用性成为开发者首选之一。而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML...

    Hibernate Annotation入门

    **Hibernate Annotation 入门** Hibernate 是一款非常流行的Java对象关系映射(ORM)框架,它允许开发者使用面向对象的方式操作数据库。而Hibernate Annotation是Hibernate的一个重要特性,它通过在Java类和字段上...

    hibernate annotation api chm文件

    Hibernate Annotation API是Hibernate ORM的一种扩展,允许开发者使用Java注解(Annotations)来定义对象-关系映射。这种API避免了传统的Hibernate XML配置文件,使得ORM配置更加内聚且易于维护。 2. **核心注解**...

    sping hibernate Annotation(注释配置) demo(例子)

    总结来说,这个 "Spring Hibernate Annotation demo" 展示了如何在 Spring 框架中使用注解配置来管理依赖,以及如何利用 Hibernate 的注解进行数据持久化。同时,它还涉及到了 Flex 前端与后端的交互。通过学习这个 ...

    HibernateAnnotation

    ### HibernateAnnotation ...通过上述介绍,我们可以看到HibernateAnnotation技术不仅简化了配置过程,而且提供了一种更加灵活的方式来管理对象与数据库之间的映射关系。这对于提高开发效率和维护性都有着重要的意义。

    Hibernate Annotation 笔记 总结 注解

    1. **注解替代XML映射**:在Hibernate 3.2及更高版本中,引入了Annotation支持,开发者可以直接在Java实体类上使用注解来定义持久化字段和关系,不再需要创建单独的`.hbm.xml`映射文件。 2. **依赖**:使用...

    Hibernate distribution and annotation

    标题“Hibernate distribution and annotation”涉及到的是Hibernate ORM框架的一个特定版本及其相关的注解功能。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程模型来操作...

    Hibernate Annotation 唯一外键一对一双向关联

    通过阅读《Hibernate_annotation_1to1_foreignKey》文档或博客,你可以更详细地了解如何配置和使用这种关联,包括示例代码、注意事项以及可能遇到的问题和解决方案。理解并熟练运用这些知识,能帮助你在使用...

    hibernate-annotation

    而Hibernate注解则是其在ORM(对象关系映射)领域的进一步进化,它允许开发者将元数据直接嵌入到Java类和属性的声明中,从而避免了XML配置文件的繁琐。本篇将详细阐述Hibernate注解的相关知识。 一、Hibernate注解...

    hibernate annotations3.4.0 GA.rar

    现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....

    hibernate-Annotation.jar

    在Hibernate 3.x版本中,引入了Annotation注解,这是一种元数据的方式,可以替代XML配置文件来描述对象与数据库表之间的映射关系。 **Hibernate Annotation注解** 在Hibernate 3.x之前,对象到数据库的映射通常...

    Hibernate中文文档+hibernate annotation +distribution

    本文将深入探讨Hibernate的核心概念,结合提供的中文文档,以及hibernate-annotation-3.4.0GA和hibernate-distribution-3.3.2.GA的相关资料,为开发者提供详尽的学习资源。 首先,Hibernate中文文档是理解框架基础...

    hibernate annotation jar

    【描述】:“Hibernate 3.3 Annotation JAR”指的是Hibernate框架的一个特定版本,即3.3版本中用于对象关系映射(ORM)的注解库。Hibernate是一个广泛使用的Java库,它允许开发人员将数据库操作与应用程序的业务逻辑...

Global site tag (gtag.js) - Google Analytics