Hibernate的注解开发之数据的三种关系介绍,表结构一对多
来源:互联网 发布:一厢情愿的感情知乎 编辑:程序博客网 时间:2024/05/22 12:19
对于应用最多的一对多表关系结构,使用hibernate的注解开发简单案例
首先需要先在hibernate的核心配置文件里配置映射文件
关于客户与订单表之间的一对多关系
hibernate.cfg.xml
<mapping class="cn.itheima.onetomany.Customer" /><mapping class="cn.itheima.onetomany.Order" />
客户类
Customer.java
package cn.itheima.onetomany;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.CascadeType;@Entity//创建ORM对象实体@Table(name = "tbl_customer")//设置对应的表public class Customer {@Id//主键设置@GeneratedValue(strategy = GenerationType.IDENTITY)//主键生成策略private Integer id;private String name;private String sex;//设置一对多关系//注意mappedBy是多的一方类的属性名customer@OneToMany(targetEntity = Order.class, mappedBy = "customer")//级联保存@Cascade(CascadeType.SAVE_UPDATE)private Set<Order> orders = new HashSet<>();public Set<Order> getOrders() {return orders;}public void setOrders(Set<Order> orders) {this.orders = orders;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}
订单类
Order.java
package cn.itheima.onetomany;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;@Entity//实体对象@Table(name="tbl_order")//对应的表public class Order {@Id//主键@GeneratedValue(strategy=GenerationType.IDENTITY)//主键生成策略private Integer oid;private Double money;private String receiverInfo;//多对一关系@ManyToOne(targetEntity=Customer.class)@JoinColumn(name="cid")//生成的外键字段名private Customer customer;public Integer getOid() {return oid;}public void setOid(Integer oid) {this.oid = oid;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}public String getReceiverInfo() {return receiverInfo;}public void setReceiverInfo(String receiverInfo) {this.receiverInfo = receiverInfo;}public Customer getCustomer() {return customer;}public void setCustomer(Customer customer) {this.customer = customer;}}
测试类
CustomerOrderTest.java
package cn.itheima.onetomany;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;public class CustomerOrderTest {@Testpublic void test1(){//加载hibernate配置文件Configuration configure = new Configuration().configure();//创建session工厂对象SessionFactory sessionFactory = configure.buildSessionFactory();//打开一个sessionSession session = sessionFactory.openSession();//开启事务管理Transaction transaction = session.beginTransaction();try{Customer c = new Customer();c.setName("张龙");c.setSex("男");Order o1 = new Order();o1.setMoney(2423d);o1.setReceiverInfo("北京");Order o2 = new Order();o2.setMoney(3325d);o2.setReceiverInfo("天津");//维护外键o1.setCustomer(c);o2.setCustomer(c);//级联操作c.getOrders().add(o1);c.getOrders().add(o2);session.save(c);//提交事务transaction.commit();}catch(Exception e){//回滚事务transaction.rollback();e.printStackTrace();throw new RuntimeException();}finally{session.close();}}}
测试结果
tbl_order
tbl_customer
0 0
- Hibernate的注解开发之数据的三种关系介绍,表结构一对多
- Hibernate的注解开发之数据的三种关系介绍,表结构多对多
- Hibernate的注解开发之数据的三种关系介绍,表结构一对一
- Java 框架之Hibernate (三、Hibernate一对多及多对多的关系分析)
- Hibernate 一对多的关系
- Hibernate一对多的关系
- (经典)Hibernate的一对多关系映射(三)
- (经典)Hibernate的一对多关系映射(三)
- hibernate 一对多注解开发
- Hibernate 基于注解的方式 实现的关系映射案例(一对一关系,一对多关系,多对多关系)
- Hibernate 中一对多的 注解 问题
- hibernate之表关系中的一对多
- hibernate 注解配置一对多关系
- hibernate 注解配置一对多关系
- hibernate 注解配置一对多关系
- Hibernate 关系映射注解详解--一对多
- 注解方式实现 Hibernate 的双向一对多关系的映射
- Hibernate中一对多的映射关系
- 侧滑菜单
- Logistic回归
- LCD MIPI DSI简析系列之二
- 卷积平滑数据原理(有边缘效应)
- 如何关闭MyEclipse 的synchronizing script resources with Tern server
- Hibernate的注解开发之数据的三种关系介绍,表结构一对多
- 设置Android系统的状态栏颜色(从Android4.4开始)
- 【精华分享】【Unity&特效&Shader】关于特效学习的总览
- 软件版本命名规范
- C++远征之封装篇——类和封装、实例化和对象成员访问
- java IO流字节流写入大写字母
- 非char类型在24c02中的存储
- linux下安装配置gitlab-ce-9.0.5
- HTML5 移动Web App阅读器-5(页面和服务器通信代码开发)