Hibernate注解多对一关联关系

实体类1

package entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

@Entity

public class Dream{

private int did;

private String ddesc;

private Person person;

@ManyToOne

@JoinColumn

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

public int getDid() {

return did;

}

public void setDid(int did) {

this.did = did;

}

public String getDdesc() {

return ddesc;

}

public void setDdesc(String ddesc) {

this.ddesc = ddesc;

}

}

实体类2

package entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

@Entity

public class Person{

private int pid;

private String name;

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

public int getPid() {

return pid;

}

public void setPid(int pid) {

this.pid = pid;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

配置文件:

<?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">

<!-- Generated by MyEclipse Hibernate Tools.                   -->

<hibernate-configuration>

<session-factory>

<property name="connection.url">jdbc:mysql://localhost:3306/test</property>

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

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

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

<!-- SQL dialect 数据库方言-->

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

<!-- JDBC connection pool (use the built-in)连接池 -->

<property name="connection.pool_size">2</property>

<!-- Enable Hibernate‘s current session context   当前session-->

<property name="current_session_context_class">org.hibernate.context.ManagedSessionContext</property>

<!-- Disable the second-level cache   -->

<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

<!-- Echo all executed SQL to stdout  在控制台显示sql语句-->

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

<!-- Drop and re-create the database schema on startup

java代码自动生成数据库里面的表

create 每次都会根据java代码,创建表,删除上次的表

update 【常用】 在上一次的基础上修改信息

create——drop 根据类生成表

validate 不创建表,但是会插入新值 -->

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

<property name="hibernate.current_session_context_class">thread</property>

<!--   将实体类中的配置文件引入hibernate中,声明配置文件 -->

<mapping  class="entity.Person"></mapping>

<mapping class="entity.Dream"></mapping>

</session-factory>

</hibernate-configuration>

测试类:

package test;

import org.hibernate.Session;

import org.hibernate.Transaction;

import util.HibernateUtil;

import entity.Dream;

import entity.Person;

public class Test {

/**

* @param args

*/

public static void main(String[] args) {

Person p=new Person();

p.setName("韩迎宾");

Dream d=new Dream();

d.setDdesc("5年后写一个Oracle");

d.setPerson(p);

Session session=HibernateUtil.getCurrentSession();

Transaction transaction=session.beginTransaction();

session.save(p);

session.save(d);

transaction.commit();

}

}

时间: 2024-11-04 22:59:24

Hibernate注解多对一关联关系的相关文章

(九)Hibernate的多对多关联关系

一.概述 多对多关联关系在java对象中可以通过定义集合类型来实现关联关系. 在关系数据模型中,无法直接表达表和表之间的多对多关联关系,而是需要创建一个中间表包含了两边的主键,来表达两张表的多对多关联关系. 实例:我们用一个Student和Course(学生和课程)的例子来演示多对多关联关系. (1)创建Student和Course类 public class Student { private Integer id; private String name; //用一个集合包含该学生所选的课程

使用Hibernate映射多对多关联关系时,是否需要创建关联对象的总结

最近在做一个CMS管理项目,在RBAC模型创建时,遇到一个小疑问. 我们知道使用Hibernate可以使用many-to-many的注解或xml配置来自动完成多对多映射,例如:User Role Group三个对象,以User和Group为例. 在数据库表中必然存在一个t_user_group的table表,使用Hibernate完全可以在不建立UserGroup对象的情况就完成级联添加.删除.查询等操作. 目前来看,我们在实体模型中是没有必要创建UserGroup这个关联对象的. 但是如果遇到

Hibernate5.2之多对多关联关系(六)

Hibernate5.2之多对多关联关系(六) 一.简介 Hibernate中多对多关联关系在工程中使用的频率也是非常高的,例如:大学中学生选课.用户订单等.在本博客中笔者一样通过实例代码为读者阐述Hibernate中的这种关联关系,笔者所采用的是学生选课的案例. 二.数据库的创建 create table courses ( id number(10,0) not null, cname varchar2(255 char), primary key (id) ); create table

Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)

One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotation) Many to Many 映射关系 多对多单向外键关联(XML/Annotation) 多对多双向外键关联(XML/Annotation) set的inverse元素详解 问题小结 关联关系的优缺点 多对一单向外键关联关系 注意多对一关联是多方持有一方的引用.看一个例子,去淘宝购物,那么一个

《Hibernate学习笔记十》:多对多关联关系详解

<Hibernate学习笔记十>:多对多关联关系 前面介绍了一对一.多对一和一对多的关联关系在Hibernate应如何实现,这篇博文就来介绍下最后一种关联关系:多对多.多对多关联关系在我们现实生活中的例子实在是太多太多,最典型的就是老师和学生的例子:一个老师可以教多个学生,而一个学生又可以被多个老师来教. 了解一点数据库的我们都知道,在数据库中表示多对多的关联关系,是借助于中间表来解决的. 如下: 还是和以往的思路一样,每一种关联关系都分为单向关联和双向关联,我们每种都会进行介绍,对于单向和双

Hibernate一对多(多对一)关联关系

上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对多和多对一是一样的, 一对多反过来想就是多对一了. Hibernate的一对多可分为: 1. 单向一对多. 2. 双向一对多. OneByOne 一: 单向一对多 准备工作: 咱们以 客户(Customer) 和 订单(Order) 的例子来说, 一个客户可以有多个订单, 但是一个订单只能属于一个客

Hibernate关联关系映射之多对多关联关系

本次仍然使用一个示例的方式进行演示,学生与教师之间的关系就是一个典型的多对多关系,一个教师可以有多个学生,同样一个学生也可以有多个教师.在数据库中存储需要一张学生表存储学生信息,一个教师表存储教师信息,为了表示他们之间的关系我们需要一个中间表来表示他们之间的联系. 例如,在教师表中有id,name两个属性,学生表中同样有id,name两个属性.教师表中有两条记录分别是(1,董老师),(2,李老师):学生表中同样有两条(1,张三),(2,李四).在中间表中有两个字段(teacherId,stude

Hibernate映射多对多双向关联关系(小案例)

多对多双向关联关系(Project(工程)/Emp(员工)为案例): 步骤如下: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 private Integer pid; //名称 private String pname; //定义集合类型的Emp属性 private Set<Emp> emps=new HashSet<Emp>(); public Integer getPid() { return pid; }

【SSH三大框架】Hibernate基础第八篇:多对多关联关系的操作

在Hibernate中的多对多关联关系,一般是不会使用的,因为对于数据库查询的时候时间复杂度太高. 我们在这里做的是学生和老师,一个学生可以有多个老师,一个老师可以有多个学生. 我们首先建立一个学生实体类:Student.java package cn.itcast.hibernate.domain; import java.util.Set; public class Student { private int id; private String name; private Set<Teac