一、组件映射

用注解配置组件映射:

Husband为我们映射的类,wife是这个类的一部分(属性不能与husband中属性重名,不要写Entity注解,不要有主键)

Husband类:(在getWife()方法上添加注解@Embedded)

package cn.orlion.hibernate.model;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; @Entity
public class Husband { private int id; private String name; private Wife wife; @Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
@Embedded
public Wife getWife() {
return wife;
} public void setWife(Wife wife) {
this.wife = wife;
}
}

wife类:

package cn.orlion.hibernate.model;

public class Wife {

    private String wifename;

    public String getWifename() {
return wifename;
} public void setWifename(String wifename) {
this.wifename = wifename;
} }

建表语句:

create table Husband (
id integer not null auto_increment,
name varchar(255),
wifename varchar(255),
primary key (id)
)

二、多对一映射

1、多对一单向映射

注解方式配置:(一个组有多个用户,每个用户对应一个组,user是多的一方,group是一)

Group类:

package cn.orlion.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/*
* 一个组有多个用户,每个用户对应一个组,user是多的一方,group是一
*/
@Entity
@Table(name="t_group")
public class Group { private int id; private String name;
@Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

User类:

package cn.orlion.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Entity
@Table(name="t_user")
public class User { private int id; private String name; private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
@ManyToOne
public Group getGroup() {
return group;
} public void setGroup(Group group) {
this.group = group;
}
}

hibernate生成的sql:

create table t_group (
id integer not null auto_increment,
name varchar(255),
primary key (id)
) create table t_user (
id integer not null auto_increment,
name varchar(255),
group_id integer,
primary key (id)
) alter table t_user
add constraint FK_e5f24mh6aryt9hsy99oydps6g
foreign key (group_id)
references t_group (id)

hibernate(七)组件映射与多对一映射的更多相关文章

  1. Hibernate之关联映射(一对多和多对一映射,多对多映射)

    ~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习以下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...

  2. Hibernate第六篇【多对多映射、一对一映射】

    前言 前面已经讲解了一对多和多对一的映射是怎么配置了,也讲解了inverse和cascade属性对关联关系的影响,本博文讲解多对多的映射和一对一的映射! 多对多映射 需求:一个项目由多个员工开发,一个 ...

  3. Hibernate之关联关系映射(一对多和多对一映射,多对多映射)

    ~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习一下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...

  4. Hibernate 中一对多和多对多映射

    1. 一对多映射 1.1 JavaWeb 一对多建表原则 多方表的外键指向一方表的主键; 1.2 编写一对多的 JavaBean // 客户(一方)和联系人(多方) // 客户(一方) JavaBea ...

  5. Hibernate表关系映射之多对多映射

    一.多对多的实现原理 在数据库中实现多对多的关系,必须使用连接表.也就是用一个独立的表来存入两个表的主键字段,通过遍历这张表来获取两表的关联关系. 而在我们的对象中,多对多是通过两者对象类中互相建立对 ...

  6. MyBatis学习(七)MyBatis关联映射之多对多映射

    对于数据库中的多对多关系建议使用一个中间表来维护关系. 1.创建四张表,分别为用户表,商品表,订单表,中间表. DROP TABLE IF EXISTS `t_user`; CREATE TABLE ...

  7. (五)hibernate关联映射之——多对一映射

    单向多对一关联: 1.多对一的关系和关系数据库中的外键参照关系最匹配,即在己方(多方)的表中的一个外键参照另一个表的主键: 2.通过在多方持有一方的引用实现,需要在“多”的一端使用<many-t ...

  8. HIbernate学习笔记(五) 关系映射之一对多与多对一

    三.       多对一 –单向 场景:用户和组:从用户角度来,多个用户属于一个组(多对一 关联) 使用hibernate开发的思路:先建立对象模型(领域模型),把实体抽取出来. 目前两个实体:用户和 ...

  9. Hibernate学习笔记三:对象关系映射(一对一,一对多,多对一,多对多)

    如需转载,请说明出处:http://www.cnblogs.com/gudu1/p/6895610.html Hibernate通过关系映射来表示数据库中表与表之间的关系,关系映射可以通过两种方式:配 ...

随机推荐

  1. 【转】react 状态与属性区别

    prop                  state 能否从父组件获取初始值             是                      否 能否由父组件修改               ...

  2. poj 1737 Connected Graph

    // poj 1737 Connected Graph // // 题目大意: // // 带标号的连通分量计数 // // 解题思路: // // 设f(n)为连通图的数量,g(n)为非连通图的数量 ...

  3. ubuntu12.04网络配置

    1.配置/etc/network/interfaces #静态IP地址 auto lo iface lo inet loopback #loopback虚拟网络设备,使TCP/IP能以127.0.0. ...

  4. STL练习题续

    //zjnu 1399 //sort 数组可用//vector sort(vector) #include<iostream> #include<algorithm> usin ...

  5. mobaxterm ssh command

    ssh -qTfnNg -D 7070 demouser@echo.supportedns.com -p 2233

  6. 使用VirtualBox自带管理工具命令为虚拟磁盘扩展空间

    VirtualBox虚拟磁盘空间不够了,默认10G.想扩大,图形界面下没有找到可操作菜单.Google了一下用 Vbox自带的命令工具VBoxManage即可解决. C:\Program Files\ ...

  7. velocity整合servlet

    目录结构点我下载工程代码俩实体类不用说了看CustomerVelocityServlet类 package com.velocity.servlet;import java.util.ArrayLis ...

  8. GnuPG 1.4.15 发布,邮件加密工具

    GnuPG 1.4.15 改进包括: * Fixed possible infinite recursion in the compressed packet parser. [CVE-2013-44 ...

  9. ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上

    一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Windows上,这样Asp.net开发的网站就难以做到跨平台.由于微软的各项技术的开源,所以微软自然 ...

  10. 【原创】GC/垃圾回收简介

    GC简介 1 GC机制 1.1 对象 从计算机的角度,装有数据的内存空间 1.2 作用 将内存垃圾的释放自动化 1.3 本质 将已经引用不到的对象视为死亡,将死亡的对象找出来并且作为垃圾进行回收 2 ...