`
shenshuibomb
  • 浏览: 25318 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate注解方式实现一对多映射

阅读更多

首先是在hibernate.cfg.xml中引入要映射的class

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=GBK</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password">sa</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="show_sql">true</property>

<property name="hibernate.hbm2ddl.auto">update</property>

<mapping class="com.sszd.hibernate.Reader"/>

<mapping class="com.sszd.hibernate.Book"/>

</session-factory>

</hibernate-configuration>

我们分别看看reader.java和book.java文件

Reader.java

package com.sszd.hibernate;

import java.util.HashSet;

import java.util.Set;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.OneToMany;

import javax.persistence.Table;

@Entity

@Table(name="reader")

public class Reader {

@Id

@Column(name="ID")

@GeneratedValue(strategy=GenerationType.AUTO)

private int id;

@Column(name="MENO")

private String meno;

@Column(name="NAME")

private String name;

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

private Set<Book> books = new HashSet<Book>();

public Reader()

{

}

public Set getBooks() {

return books;

}

public void setBooks(Set books) {

this.books = books;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getMeno() {

return meno;

}

public void setMeno(String meno) {

this.meno = meno;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

book.java

package com.sszd.hibernate;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;

@Entity

@Table(name="book")

public class Book {

@Id

@Column(name="ID")

@GeneratedValue(strategy=GenerationType.AUTO)

private int id;

@Column(name="TITLE")

private String title;

@ManyToOne(cascade = CascadeType.ALL, optional = false)

@JoinColumn(name="rea_id", referencedColumnName="id")//外键为sut_id,与student中的id关联

private Reader reader;

public int getId() {

return id;

}

public Reader getReader() {

return reader;

}

public void setReader(Reader reader) {

this.reader = reader;

}

public void setId(int id) {

this.id = id;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

}

接下来是我们的本地测试用例

package com.sszd.main;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.AnnotationConfiguration;

import com.sszd.hibernate.Book;

import com.sszd.hibernate.Reader;

public class ReaderToBooks {

private static SessionFactory sessionFactory;

public static void main(String[] args) {

sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

Session session = sessionFactory.openSession();

Reader r = new Reader();

r.setName("Reader zhang");

Book b1 = new Book();

b1.setTitle("title1");

Book b2 = new Book();

b2.setTitle("title2");

b1.setReader(r);

b2.setReader(r);

r.getBooks().add(b1);

r.getBooks().add(b2);

Transaction trx = session.beginTransaction();

session.save(r);

trx.commit();

session.close();

}

}

分享到:
评论

相关推荐

    Hibernate关于注解的一对多,多对多,一对一

    `@OneToMany`、`@ManyToMany`和`@OneToOne`注解分别对应了一对多、多对多和一对一的关系映射,通过合理的配置,可以实现数据的高效管理和操作。在实际开发中,根据业务需求灵活运用这些注解,可以构建出稳定、可扩展...

    Hibernate使用 Map实现多对多映射

    在Java的持久化框架Hibernate中,多对多映射是一种常见的关系映射方式,用于处理两个实体类之间一对多或多对一的关系。在这个例子中,我们看到的是`Team`(团队)与`Member`(成员)之间的多对多关系,通过`Map`数据...

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

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    Hibernate 注解映射

    * 双向一对多映射:在多端使用 @ManyToOne 和 @JoinColumn 注解,在一端使用 @OneToMany 和 mappedBy 注解,指定关联属性名。 * 双线一对一映射:基于外键使用 @OneToOne 注解,基于主键使用 Hibernate 的扩展注解。...

    Hibernate 注解一对多,多对一

    "Hibernate注解一对多,多对一"是两个常见的关系映射类型,适用于处理实体类之间的复杂关联。 一、一对多关系 在现实世界中,例如一个部门有多个员工,这就是一对多的关系。在Hibernate中,我们可以使用`@...

    hibernate 一对多多对一的映射

    在Hibernate中,可以通过以下方式实现一对多映射: 1. **配置文件映射**:在Hibernate的配置文件(如`hibernate.cfg.xml`)中,声明两个实体类对应的数据库表,并设置关联关系。 2. **实体类定义**:在Java实体类中...

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

    Hibernate注解提供了方便的方式来描述实体类和它们之间的关系。在双向多对多关联中,你需要在两个实体类中都添加`@ManyToMany`注解。`@ManyToMany`注解的参数包括: - `targetEntity`: 指定关联的实体类。 - `...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

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

    通过以上步骤,我们便成功使用注解实现了Hibernate中的单向一对多关联映射。这种映射方式在很多场景下都非常实用,如管理用户角色、订单商品等关系。在实际开发中,根据具体需求选择合适的关联映射方式,能有效提高...

    Hibernate注解 关联关系映射注解.docx

    首先,`@OneToMany`注解用于表示一对多的关联关系,比如一个班级可以有多个学生。在单向关联中,我们通常在拥有“多”的那一方(例如班级)的实体类中使用`@OneToMany`,并使用`@JoinColumn`来指定外键字段。`...

    Hibernate一对多关联映射(注解)

    总结一下,Hibernate的一对多关联映射通过注解方式定义了对象间的关联关系,使得我们在编程时能够以面向对象的方式操作数据,而底层数据库的操作则由Hibernate自动完成。这种方式大大提高了开发效率,同时也降低了...

    hibernate单向多对多映射(注解版)

    在Hibernate中,实现单向多对多映射主要涉及到以下几个注解: 1. `@ManyToMany`: 这是定义多对多关系的核心注解,通常放在List、Set或其他集合类型的字段上。它需要两个参数:`targetEntity`指定关联的实体类,`...

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

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

    hibernate学习入门一对多实体映射源码

    在理解了一对多映射后,我们可以通过Hibernate API来处理这种关系: 1. 插入数据时,先创建父实体,然后在子实体中设置父实体的引用,最后保存子实体。Hibernate会自动处理外键的插入。 2. 查询时,可以从父实体...

    hibernate(一对多,多对一映射)操作

    1. 一对多映射(One-to-Many): 在这种关系中,一个实体(父实体)可以与多个其他实体(子实体)相关联。在Hibernate中,我们通常使用`@OneToMany`注解来表示这种关系。例如,一个学生可以有多个课程,而一门课程...

    Hibernate一对一,一对多,多对多实例

    本实例将深入探讨Hibernate中的三种基本关联关系:一对一(One-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)的实现方式。 1. **一对一关联**: 一对一关联通常出现在两个实体之间存在唯一对应关系...

    Hibernate 注解说明文档

    2. **@OneToMany**: 一对多关联,可以指定`mappedBy`属性,表明在另一方实体类中有引用。 3. **@ManyToOne**: 多对一关联,通常与`@JoinColumn`配合使用,指定外键列。 4. **@ManyToMany**: 多对多关联,通常通过...

    Hibernate多对一映射(注解版)

    本教程将重点讲解如何在Hibernate中实现多对一的映射关系,采用的是注解方式进行配置。 **一、多对一关系** 在数据库设计中,多对一关系表示一个实体可以与另一个实体的多个实例相关联。例如,一个部门可以有多名...

    Hibernate注解多对多映射小实例

    在这个小实例中,我们了解了如何使用Hibernate注解实现多对多映射,以及如何在代码中操作这些实体。通过这种方式,我们能够在Java应用程序中方便地管理数据库关系,而无需编写繁琐的SQL语句。这个例子展示了...

    Hibernate一对多映射

    我们来详细探讨一下Hibernate一对多映射的实现方法、配置以及应用场景。 **1. 实体类定义** 在一对多映射中,我们需要至少两个实体类,一个是“一”的一方,另一个是“多”的一方。比如,一个`User`类(“一”方)...

Global site tag (gtag.js) - Google Analytics