hibernate -- 注解映射实体和表
表名的映射
//代表此类参与ORM映射,此注解必须要有
@Entity
//代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略
@Table(name="user50")
public class User {
主键的映射
//主键,此注解必须要有
@Id
//数据库表中主键列名为id,如果实体类属性名和列名相同,此注解可以省略
@Column(name="id")
//主键的维护策略
@GenericGenerator(name="inc50",strategy="increment")
@GeneratedValue(generator="inc50")
private Integer userID;
属性映射成表的字段
//@Column(name="name")//此属性要映射到名为name的列上,若属性名和列名相同,则注解可以省略
private String name;
日期类型的映射
@Column(name="birth")
//如果属性是日期格式,可以设置日期的保存规格
//time:只保存时间 date:只保存日期 timestamp:(默认)日期+时间
@Temporal(TemporalType.DATE)
private Date birthday;
表之间的关系是一对一的映射
Person实体中:
//关系属性:告知Passport它的关系属性
//mappedBy"对方中映射着外键的关系属性==Passport表中有一个关系属性,名字是person50"
@OneToOne(mappedBy="person50")
//ALL:增删改都可以级联(cascade)
//save-update:增加和更新可以级联
//delete:删除可以级联
//如果不设置,则增删改都不可以级联
//注意:查询例外,不受级联权限的控制,默认级联。
@Cascade(value=CascadeType.ALL)
private Passport passport50;
Passport实体中:
//关系属性
@OneToOne
//JoinColumn:代表是从表,name的值代表:Passport表中外键名为person_id
@JoinColumn(name="person_id")
//@Cascade
private Person person50;
表之间的关系是一对多的映射
user表 1: n order表
user实体:
@OneToMany(mappedBy="user")
//ALL:增删改都可以级联(cascade)
//save-update:增加和更新可以级联
//delete:删除可以级联
//如果不设置,则增删改都不可以级联
//注意:查询例外,不受级联权限的控制,默认级联。
@Cascade(value=CascadeType.DELETE)
private Set<Order> orders=new HashSet<Order>();
order实体:
//关系属性
@ManyToOne
//JoinColumn:name代表关系属性映射的列
@JoinColumn(name="user_id")
private User user;
表之间的关系是多对多的映射
Student n:n Course 关系表: r_c_s
Student实体:
//关系属性
//EAGER: 查询时关联的数据也同时取出放入内存中,因为在内存里,所以在session外也可以取
@ManyToMany(fetch=FetchType.EAGER)
//中间表,两个外键: joinColumns=指向自己的外键 inverseJoinColumns=指向对方的外键
@JoinTable(name="r_c_s"
,joinColumns={@JoinColumn(name="stu_id")}
,inverseJoinColumns={@JoinColumn(name="cour_id")})
@Cascade(value=CascadeType.ALL)
private Set<Course> courses=new HashSet<Course>();
Course实体:
//关系属性
@ManyToMany
@JoinTable(name="r_c_s"
,joinColumns={@JoinColumn(name="cour_id")}
,inverseJoinColumns={@JoinColumn(name="stu_id")})
@Cascade(value=CascadeType.ALL)
private Set<Student> students=new HashSet<Student>();
hibernate -- 注解映射实体和表的更多相关文章
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长: 通过Hibernate注解的方式映射oracel数据库的sequence主键生成器 ...
- Hibernate框架学习之注解映射实体类
前面的相关文章中,我们已经介绍了使用XML配置文件映射实体类及其各种类型的属性的相关知识.然而不论是时代的潮流还是臃肿繁杂的配置代码告诉我们,注解配置才是更人性化的设计,于是学习了基本的映射 ...
- [Hibernate] 注解映射例子
Hibernate 注解(Hibernate Annotation) 是一种比较新的方式,通过在 java 简单类增加注解,来声明 java 类和数据库表的映射,作用和 xml 文件相似.hibern ...
- Hibernate注解映射联合主键的三种主要方式
今天在做项目的时候,一个中间表没有主键,所有在创建实体的时候也未加组件,结果报以下错误: org.springframework.beans.factory.BeanCreationException ...
- hibernate通过注解实现实体和表的映射
参考: 表名的映射: //代表此类参与ORM映射,此注解必须要有 @Entity //代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略 @Table(name=" ...
- Hibernate 注解映射
工作中遇到hibernate映射的一些问题,这里总结一下 (特别是测试时,许多数据并不能有效关联.所以@NotFound 很重要) 一,假设有2张表user,company 我们知道,一个用户属于一个 ...
- 联合主键用Hibernate注解映射的三种方式
第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主 ...
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
[转自] http://blog.csdn.net/majian_1987/article/details/8725197 LZ在项目中需要处理这样一个业务,每天都有终端设备上传GPS位置信息到服务端 ...
- hibernate用注解配置实体类的映射
一.注解类 1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键). 3. @Co ...
随机推荐
- Scala + Thrift+ Zookeeper+Flume+Kafka配置笔记
1. 开发环境 1.1. 软件包下载 1.1.1. JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...
- JSP用户登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Linux 加载卷组
root 用户下执行: vgchange -ay vgdatamount /u01 vgdisplay 查看卷组
- SQL Server ->> 调用系统内建扩展存储过程"master.dbo.xp_delete_file"删除过期备份文件
DECLARE @oldDate DATETIME SET @oldDate = GETDATE()-30 EXECUTE MASTER.dbo.xp_delete_file 0, N'D:\back ...
- ASP.Net WebAPI的返回值
Asp.Net WebAPI服务函数的返回值主要可以分为void.普通对象.HttpResponseMessag.IHttpActionResult e四种,本文这里简单的介绍一下它们的区别. 一.返 ...
- 关于easyUI分页
首先前台会传来两个参数,分别是rows(一页数据的大小,即一页有多少条数据)和page(第几页),根据这两个参数可以计算出从数据库中从第几 条数据开始取和要取多少条数据.数据取出来后,因为easyUI ...
- 用UITextView加载rtfd文件
用UITextView加载rtfd文件 效果 说明 使用此方法可以实现十分简易的富文本显示效果,包括图文混排等等效果. 源码 // // ViewController.m // Rtfd // // ...
- UNIX高级环境编程(1)File I/O
引言: Unix系统中主要的文件操作包括: open read write lseek close unbuffered IO和standard I/O相对应,后面的章节我们会讨论这两者的区别. 在讨 ...
- java 和 javascript CryptoJS 进行HmacSHA1加密
import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Invali ...
- 三星平板SM-T320刷机
三星 Galaxy Tab Pro 8.4 (SM-T320) / 国行 固件下载 刷机教程 下载手机驱动,刷机工具Odin,相应的固件包,手机和电脑用数据线连接安装好手机的驱动. 手机先完全的关机, ...