Hibernate实体基本注解,ManyToOne,OneToMany,cascade,orphanRemoval等说明
Hibernate注解实现实体持久化
首先我们创建一个实体类:
@Entity
@Table(name="product")
public class Product implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private Integer pid;@Columnprivate String pname;@Columnprivate Double price;
@Entity:声明该类为一个实体类
@Table:对应数据库中的哪一张表,name=“数据库中的表名"
@Id:该字段为id属性
@GeneratedValue(strategy=GenerationType.IDENTITY):设置id在数据库中创建时自增自动生成
然后在Hibernate.cfg.xml中配置如下字段:
<mapping class="entity.Product"/>
如果我们是在Spring中的applicationContext.xml中配置的话,我们就在<bean id="sessionFactory"></bean>加上以下字段:
<property name="annotatedClasses"> <list> <value>entity.Product</value> </list></property>
这样我们就完成了Hibernate实体注解的基本配置。
如果我们多个实体之间有一对多的关系,我们就需要使用@OneToMany,@ManyToOne:
案例:一个一级分类对应多个二级分类,一个二级分类对应多个商品对象。我们根据一级分类的id查询到它下面的所有商品集合。
@Entity
@Table(name="category")
public class Category implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private Integer cid;@Columnprivate String cname;//一个一级分类对应多个二级分类@OneToMany(targetEntity=Categorysecond.class,mappedBy="category",cascade=CascadeType.ALL,orphanRemoval=true,fetch=FetchType.EAGER)@OrderBy("csid")//set集合中无序,所以我们通过csid排序private Set<Categorysecond> categoryseconds=new HashSet<Categorysecond>();
@Entity
@Table(name="categorysecond")
public class Categorysecond implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private Integer csid;@Columnprivate String csname;//多个二级分类对应一个一级分类@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=Category.class)<span style="white-space:pre"> </span>@JoinColumn(name = "cid")private Category category;//一个二级分类包含多个商品,这个表中不含有的列,所以不用使用JoinColumn@OneToMany(targetEntity=Product.class,mappedBy="categorysecond",cascade=CascadeType.ALL,orphanRemoval=true,fetch=FetchType.EAGER)@OrderBy("pid")//根据商品pid排序private Set<Categorysecond> categoryseconds=new HashSet<Categorysecond>();
建立两个实体类,Categorysecond中含有外键cid,所以我们使用了@JoinColumn,这是因为一对多在多的一端加入外键,多对多就建立中间表.
targetEntity:对应的这个属性的那个类
mappedBy:把关系的维护交给多方对象的属性去维护关系
cascade:设置级联操作类型
orphanRemoval:如:一级分类删除,是否自动删除和该一级分类外键的二级分类及关联的商品对象,true代表自动删除
fetch:加载策略,如懒加载,因功能需要设置,如果我们需要查询一级分类的时候就把二级分类查出来,就不用懒加载。
@Entity
@Table(name="product")
public class Product implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private Integer pid;@Columnprivate String pname;@Columnprivate Double market_price;@Columnprivate Double shop_price;@Columnprivate String image;@Columnprivate String pdesc;@Columnprivate Integer is_hot;@Columnprivate Date pdate;//fetch:加载策略,如懒加载//多个商品对应一个二级分类@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=Categorysecond.class)<span style="white-space:pre"> </span> @JoinColumn(name = "csid")private Categorysecond categorysecond;
商品类写好后,根据一级分类ID得到商品对象:
String hql="from Product p where p.categorysecond.category.cid=?"
Hibernate实体基本注解,ManyToOne,OneToMany,cascade,orphanRemoval等说明相关推荐
- Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]
1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java package com.rhythmk.model;import java.util.Date;pu ...
- spring + hibernate + 实体类 注解配置代码
<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.spr ...
- hibernate实体类注解
<!-- 基于annotation的配置 --> <mapping class="com.xiaoluo.bean.User"/> <!-- 基于hb ...
- Hibernate实体映射配置1(java@注解方式)
实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...
- Spring 注解 hibernate 实体方法 property name=packagesToScan value=com.sise.domain/
Spring 注解 hibernate 实体方法 <property name="packagesToScan" value="com.sise.domain&qu ...
- 声明属性Hibernate的Annotation注解
工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下声明属性 当项目变得比较大的时候,如何还应用hbm.xml文件来配置Hibernate实体就会变得比较复杂.这里Hi ...
- Hibernate中的注解说明
Hibernate中注解注解比较多,常用的也就那么几个,在这里把Hibernate中的注解汇总总结一下. @Entity:将一个类声明为一个实体bean,即一个持久化POJO; @Id:声明bean的 ...
- Hibernate一对多关联映射及cascade级联操作
我们以客户(Customer)与订单(Order)为例 实体类创建 Order订单实体类 //订单-----多的一方 public class Order {private Integer id;pr ...
- Hibernate 实体关联关系映射----总结
http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...
最新文章
- android 固定底部,如何将view固定在屏幕底部?
- 2020年10个诱人的技术里程碑
- JQuery 实现遮罩层
- clear在CSS中的妙用
- jooq权限配置_将jOOQ与Spring结合使用:配置
- elk替代_Go进阶45:Golang简洁的日志收集系统(替代ELKB)
- 带父节点的平衡二叉树_平衡二叉树的左右旋以及双旋转的图文详解
- HDU 3586 Information Disturbing (树形DP,二分)
- 18家机构批量刷新SOTA!T5 is all you need!
- python中PIL.Image,OpenCV,Numpy图像格式相互转换
- 163接收邮件服务器pop3,pop3设置(163邮箱imap pop3设置)
- Update批量更新
- 华为云CDN加速WAF防护资源实践
- Python中面向对象(类,对象,魔法,打印)
- 华勤技术股份有限公司
- matlab升幂降幂排列,升幂排列与降幂排列测试题及答案
- VB.NET模拟LED数字钟
- 张勋说:耐磨钢球简介
- matlab验证dtft移位性质,数字信号处理教程:MATLAB释义与实现(第2版)
- 苹果接盘曼联被辟谣/ 特斯拉FSD北美完全开放/ 马斯克脑机接口准备人体试验/ 微软收购暴雪遇阻…今日更多新鲜事在此...