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等说明相关推荐

  1. Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]

    1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java package com.rhythmk.model;import java.util.Date;pu ...

  2. spring + hibernate + 实体类 注解配置代码

    <?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.spr ...

  3. hibernate实体类注解

    <!-- 基于annotation的配置 --> <mapping class="com.xiaoluo.bean.User"/> <!-- 基于hb ...

  4. Hibernate实体映射配置1(java@注解方式)

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  5. Spring 注解 hibernate 实体方法 property name=packagesToScan value=com.sise.domain/

    Spring 注解 hibernate 实体方法 <property name="packagesToScan" value="com.sise.domain&qu ...

  6. 声明属性Hibernate的Annotation注解

    工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下声明属性 当项目变得比较大的时候,如何还应用hbm.xml文件来配置Hibernate实体就会变得比较复杂.这里Hi ...

  7. Hibernate中的注解说明

    Hibernate中注解注解比较多,常用的也就那么几个,在这里把Hibernate中的注解汇总总结一下. @Entity:将一个类声明为一个实体bean,即一个持久化POJO; @Id:声明bean的 ...

  8. Hibernate一对多关联映射及cascade级联操作

    我们以客户(Customer)与订单(Order)为例 实体类创建 Order订单实体类 //订单-----多的一方 public class Order {private Integer id;pr ...

  9. Hibernate 实体关联关系映射----总结

    http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...

最新文章

  1. android 固定底部,如何将view固定在屏幕底部?
  2. 2020年10个诱人的技术里程碑
  3. JQuery 实现遮罩层
  4. clear在CSS中的妙用
  5. jooq权限配置_将jOOQ与Spring结合使用:配置
  6. elk替代_Go进阶45:Golang简洁的日志收集系统(替代ELKB)
  7. 带父节点的平衡二叉树_平衡二叉树的左右旋以及双旋转的图文详解
  8. HDU 3586 Information Disturbing (树形DP,二分)
  9. 18家机构批量刷新SOTA!T5 is all you need!
  10. python中PIL.Image,OpenCV,Numpy图像格式相互转换
  11. 163接收邮件服务器pop3,pop3设置(163邮箱imap pop3设置)
  12. Update批量更新
  13. 华为云CDN加速WAF防护资源实践
  14. Python中面向对象(类,对象,魔法,打印)
  15. 华勤技术股份有限公司
  16. matlab升幂降幂排列,升幂排列与降幂排列测试题及答案
  17. VB.NET模拟LED数字钟
  18. 张勋说:耐磨钢球简介
  19. matlab验证dtft移位性质,数字信号处理教程:MATLAB释义与实现(第2版)
  20. 苹果接盘曼联被辟谣/ 特斯拉FSD北美完全开放/ 马斯克脑机接口准备人体试验/ 微软收购暴雪遇阻…今日更多新鲜事在此...

热门文章

  1. 八月,我彻底败给了懒惰小人!九月,冲冲冲
  2. Structured Threat Information eXpression
  3. Machine Learning 梳理总结 L0~L6
  4. 搜狗搜索网站验证说明
  5. PID实例讲解(适合小白),PID三个变量的作用与关系
  6. [深度解剖C语言] --关键字 static
  7. 流计算框架——Storm
  8. 单细胞转录组基础知识详解
  9. 标题可降解塑料之现代医药材料应用
  10. 艾瑞咨询:2020年中国容器云市场研究报告(笔记)