`
sandy_leen
  • 浏览: 71628 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Hibernate annotation的关系定义

阅读更多

一、@OneToOne

 

代码
  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

 

 

代码
  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中Many指的是本类(也就是声明@ManeyToOne的类),One是指关联类,也就是To前边的对应本类,后边的对应关联类。如果方法返回的是单数关联类则定义@ManyToOne,例如: 
代码
  1. @ManyToOne  
  2. public Department getDepartment() {   
  3. return department;   
  4. }  

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

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

 

三、@ManyToMany

 

代码
  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. @ManyToMany(mappedBy="authors")   
  20. public Set<Book> getBooks(){   
  21. return books;   
  22. }   
  23.   
  24. Public void setBooks(Set<Book> books){   
  25.     This.books = books;   
  26. }   
  27. }   

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

分享到:
评论
1 楼 yu_xian81 2009-03-05  
@OneToMany(mappedBy="department")  one方是关系拥有者,相当于设置了inverse="false"?
另从一文档上看来的:
4)OneToMany 与 ManyToOne 双向关联
在ManyToOne的配置上再加以下:
@OneToMany(mappedBy = "articleType")
private List<Article> articles;

补充:对OneToMany的双向映射,如果要OneToMany这一端维护关系,你需要删除mappedBy元素

看起来好矛盾.

相关推荐

    hibernate annotation hibernate3

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

    hibernate annotation 中文文档

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

    Hibernate Annotation 中文文档

    Hibernate Annotation是Hibernate框架的一个扩展,它允许开发者直接在Java类和属性上使用注解(Annotations),来定义实体类与数据库表之间的映射关系。相比于XML配置,注解提供了一种更加内聚和直接的方式,使得...

    Hibernate Annotation库

    Hibernate Annotation库是Java开发中用于简化对象关系映射(ORM)的一个重要组件,它使得开发者能够在Java类上直接使用注解来定义数据库映射,从而避免了传统的XML配置文件。这三个特定的jar包是Hibernate ORM框架中...

    Hibernate Annotation 学习笔记

    3. 实体类:例如,创建一个`User`类,使用Hibernate Annotation定义实体属性。`@Entity`标记表明这是一个实体类,`@Id`和`@GeneratedValue(strategy = GenerationType.AUTO)`表示`id`字段是主键,且自动生成。数据库...

    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(例子)

    在 Hibernate 中,实体类可以通过注解进行配置,如 `@Entity` 表示该类对应数据库中的表,`@Table` 定义表名,`@Id` 定义主键,`@GeneratedValue` 用于自动生成主键值。另外,`@Column`、`@ManyToOne`、`@OneToMany`...

    Hibernate Annotation 笔记 总结 注解

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

    HibernateAnnotation

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

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

    `@OneToOne`注解在Hibernate中用于定义一对一的关系,可以是单向或双向的。单向关联意味着在一个实体类中定义了对另一个实体的引用,而另一个实体类并不知道这个引用。双向关联则意味着两个实体类都有对方的引用,...

    Hibernate distribution and annotation

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

    Hibernate-Annotation中文教程.pdf

    借助新的 Hibernate Annotation 库,即可一次性地分配所有旧映射文件,一切都会按照您的想法来定义——注释直接嵌入到您的 Java 类中,并提供一种强大及灵活的方法来声明持久性映射。 Hibernate Annotation 的优点...

    Hibernate中文文档+hibernate annotation +distribution

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

    hibernate-Annotation.jar

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

    hibernate annotation jar

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

    Hibernate Annotation笔记

    使用Hibernate Annotation时,需要在实体类中使用特定的注解来定义与数据库表之间的映射规则。以下是几种常用的注解: - **@Entity**:标记类为Hibernate的实体类。 - **@Table**:指定实体类所对应的数据库表名...

    hibernate annotation 3.40

    Hibernate Annotation是Hibernate 3.x引入的新特性,它允许开发者通过在Java类和类属性上使用特定的注解,来定义对象和数据库表之间的映射关系。这使得开发者可以脱离XML配置文件,直接在源代码中管理ORM配置。 2....

    hibernate annotation学习文档

    Hibernate 支持多种注解(Annotation),使得开发人员能够更加灵活地定义实体类与数据库表之间的映射关系。本文档旨在帮助开发者深入了解 Hibernate 注解的基本概念及其应用场景。 #### 二、环境搭建 1. **下载...

Global site tag (gtag.js) - Google Analytics