`
shenshuibomb
  • 浏览: 24454 次
  • 性别: 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双向一对一关联映射(注解版)

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

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

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

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

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

    hibernate 一对多多对一的映射

    使用hibernate技术实现对MySQL数据库的一对多和多对一的映射。下载后对应着改一下自己的IP地址就好了。

    Hibernate多对一映射(注解版)

    Hibernate多对一映射(注解版)

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

    NULL 博文链接:https://profound-accumulation.iteye.com/blog/2243079

    Hibernate1对多1对1多对多关联映射例子源码含注解配置

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用...

    Hibernate注解

    * @OneToMany 设置一对多关联。cascade属性指定关联级别,参考@OneToOne中的说明。fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 * 方法一 使用这种配置,在为“一端”添加“多...

    Hibernate1对多1对1多对多关联映射例子源码含xml配置

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,这个是xml配置的例子

    hibernate映射的注解配置

    使用hibernate的注解配置可以很好的完成跟实体的映射。而且还可以通过注解配置,可以完成多对一,一对多等关系的配置,非常好。

    ssh全注解项目(一对一,一对多,多对多)

    ssh全注解项目(一对一,一对多,多对多),hibernate的注解配置及映射关系

    hibernate注解案例

    Hibernate 的注解学习 ExportDBAnnotation HibernateAnnotationUtils 【一对一】关系映射【一对多】关系映射 【多对多】关系映射 【composite复合主键】关系映射【component组件】关系映射

    Hibernate学习笔记和资料

    hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式

    Hibernate_Annotation关联映射

    对于一对多的双向映射,如果要一对多这一端维护关联关系,你需要删除mappedBy元素并将多对一这端的@JoinColoumn的insertable和updatabel设置为false。这种方案不会得到什么明显的优化,而且还会增加一些附加的UPDATE...

    精通Java Web整合开发(第2版)

    12.4.6 一对多双向关联的annotation注解实现540 12.4.7 一对多双向自身关联的annotation注解实现542 12.4.8 多对多单向关联的annotation注解实现543 12.4.9 多对多双向关联的annotation注解实现545 12.4.10 组成关系...

    Java的Hibernate框架中一对多的单向和双向关联映射

    建立对SQL语句的映射是Hibernate框架操作数据库的主要手段,这里我们列举实例来为大家讲解Java的Hibernate框架中一对多的单向和双向关联映射

    Hibernate Annotations 中文文档

    一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表...

    Hibernate+中文文档

    7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...

    hibernate annotation 中文文档

    一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表...

    Hibernate注释大全收藏

    这种策略支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。一旦使用就不能使用AUTO和IDENTIFY生成器。 每个类层次结构一张表 @Entity @Inheritance(strategy=InheritanceType....

Global site tag (gtag.js) - Google Analytics