hibernate学习笔记第三天(1)
来源:互联网 发布:mac baren烟丝购买 编辑:程序博客网 时间:2024/06/04 08:30
此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
若是想看具体第三天的代码可点击此处。
表与表之间的关系回顾
1.一对多
(1)分类和商品关系,一个分类里可以有多个商品,一个商品只能属于一个分类
(2)客户和联系人关系是一对多关系
客户:与公司有业务往来的,百度、新浪、360
联系人:公司里面的员工,百度里有很多员工,联系员工
公司和公司员工的关系
客户是一,联系人是多
一个客户里面可以有多个联系人,一个联系人只能属于一个客户
(3)一对多建表:通过外键建立关系
2.多对多
(1)订单与商品关系,一个订单可以有多个商品,一个商品也可以属于多个订单
(2)用户和角色是多对多到的关系
用户:小王、小马、小宋
角色:总经理、秘书、司机、保安
比如小王:可以是总经理,也可以是司机
比如小宋:可以是司机,可以是秘书,也可以是保安
比如小马:可以是秘书,可以是总经理
一个用户里可以有多个角色,一个角色也可以有多个用户
(3)多对多建表:创建第三张表来维护关系
3.一对一
(1)在中国,一个男人只有一个妻子,一个女人只有一个丈夫
Hibernate的一对多操作(重点)
一对多的映射配置
以客户和联系人为例:客户是一,联系人是多
第一步:创建实体类,客户和联系人
第二步:让两个实体类之间互相表示
(1)在客户实体类中表示多个联系人
一个客户中有多个联系人
(2)在联系人实体类中表示所属客户
一个联系人只属于一个客户
第三步:配置映射关系
(1)一般一个类对应一个映射文件
(2)把映射的基本配置完成
(3)在映射文件中,配置一对多的关系
在客户映射文件中,表示所属的联系人
在联系人映射文件中,表示所属的客户
第四步:创建核心配置文件,把文件映射到核心配置文件
第五步:运行工具类HibernateUtils创建表结构
一对多的级联操作
一对多级联保存
(1)添加一个客户,为这个客户添加多个联系人
示例代码1(较麻烦):
public void testAddDemo1(){
try{
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
//添加一个客户,为这个客户添加一个联系人 //1.创建客户与联系人的对象 Customer customer = new Customer("传智播客", "vip", "网络", "112", "999"); LinkMan linkMan = new LinkMan("lucy", "男", "119"); //2.在客户中表示联系人,在联系人中表示客户 //建立客户与联系人之间的关系 //2.1把联系人对象放到客户对象的set集合里 customer.getLinkmans().add(linkMan); //2.2把客户对象放到联系人对象中 linkMan.setCustomer(customer); //3保存到数据库中 session.save(customer); session.save(linkMan); transaction.commit(); }catch(Exception e){ e.printStackTrace(); transaction.rollback(); }finally{ session.close(); sessionFactory.close(); }}
代码演示:
示例代码2(较简单的):
一般根据客户添加联系人
第一步:在客户映射文件中进行配置
在客户的映射文件的set标签上配置
第二步:创建客户与联系人的对象,只需要把联系人放到客户里就行了(多放到一中)
一对多级联删除
1.删除一个客户,属于这个客户的联系人也一块删除
2.具体实现
第一步:在客户的映射文件中set标签,进行配置
(1)使用属性cascade属性值delete,若有存在的其他值,则用“,”隔开
第二步:在代码中直接删除客户
(1)现根据id查询出对象,调用session的delete方法删除
测试代码:
执行过程:
(1)根据id查询客户
(2)根据外键的id值查询联系人
(3)设置联系人的外键的值为null
(4)删除联系人
(5)删除客户
- hibernate学习笔记第三天(1)
- hibernate学习笔记第三天(2)
- Hibernate学习笔记(第三天)
- hibernate学习第三天笔记
- Hibernate学习第三天
- 第三天学习笔记
- 第三天学习笔记
- 学习笔记第三天
- hibernate 学习笔记(马士兵教程) 第三天
- Struts2学习笔记(第三天)
- JavaScript学习笔记(第三天)
- 嵌入式学习笔记(第三天)
- Koa2 学习笔记(第三天)
- Css 学习笔记第三天
- Struts学习笔记第三天
- Android学习笔记: 第三天
- java学习笔记--第三天
- liunx学习第三天笔记
- JVM笔记(二) 垃圾收集器(1)
- 【题解】 [HAOI2006]受欢迎的牛(强连通分量 tarjan)
- hdoj 1875 通畅工程再续 最小生成树
- python学习笔记(6):tuple的基本操作
- 加速matlab运行的三重境界
- hibernate学习笔记第三天(1)
- Android NumberPicker 使用
- bootstrap多次弹窗导致页面左移,body上多了样式"padding-right: 17px" 解决办法
- 欢迎使用CSDN-markdown编辑器
- Linux 学习总结 (五)
- 京东在html5页面中打开本地app的解决方案
- 以太网PHY直接连接
- LINK : fatal error LNK1123
- 软件测试面试总结