转转转!hibernate

本文介绍了Hibernate ORM框架的基础知识,包括为什么使用Hibernate、如何解决JDBC的繁琐代码问题,以及ORM映射的概念。同时,详细讲解了Hibernate的基本操作流程、不同对象状态的管理,以及关联关系的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01.Hibernate课堂纪要
02.
03.为什么要使用Hibernate
04. 解决JDBC繁琐的代码问题。
05. Hibernate 是在JDBC的基础上进行封装,只需要少量的代码完成持久化工作
06.
07.什么是orm映射
08. 面向对象语言和关系数据库之间阻抗不匹配的问题。完成对象数据到关系数据库映射
09.
10.基本操作
11. 1. 添加包
12. 2. 添加hibernate.cfg.xml 文件
13. 3. 添加对象和映射文件 (object.hbm.xml)
14.
15.使用hibernate的七个步骤:
16. 1.读取配置文件
17. Configuration cfg = new Configuration().configre();
18. 2.创建sessionFactory factory = cfg.buildSessionFactory();
19. 3.创建session session = factory.opensession();
20. 4.打开事物 Transaction tx = session.beginTransaction();
21. 5.持久化操作 session.save();...
22. 6.提交事物 tx.commint();
23. 7.关闭session.close();
24.
25.
26.使用工具简化操作(操作方式)
27. 1. 添加hibernate支持
28. 2. 配置DB Browser 配置数据源
29. 2. 将表中的数据导出为实体和映射文件
30.
31.hibernate的三种状态
32. 1.瞬时状态:
33. 当new一个对象的时所处的状态为瞬时状态。
34. 2.持久状态:
35. save或update 的时所处的状态为持久状态
36. 3.离线状态
37. a> 删除前要先获取该对像,将该对象删除哦,获取的对象还存在,只是不能在于数据库
38. 打交道,不受hibernate管理,称为离线状态。
39. b> 删除数据或者关闭session的时候所处的状态为离线状态
40.
41.
42.get和load加载数据的区别
43. get:
44. 1. 使用get加载数据时,hibernate会先发hql语句,并将基本属性的数据加载进来。
45. 如果不存在该数据,会抛出nullException空指针。
46.
47. 2. 当关闭session后,使用get()加载其关联数据时,将抛出on session Exception
48. session关闭后属于离线状态,并不能再获取其关联的数据。处理此方式有两种方法:
49.
50. 方式一: 在配置文件中设置lazy属性为false。
51. 方式二:在代码块中先获取关联的非ID数据即可。
52.
53. 删除数据时使用。呵呵
54. 默认情况下,get不会去获取所关联的数据(session关闭的前提下)
55.
56. load:
57. 1. load 属于延迟加载。执行时hibernate 不会先发hql语句。先获取ID,如果没有用到非Id属性,load不会去加载其他数据。当数据库没有与之对象的数据,将抛出 ObjectNOFoundException. 处理方式方式有:
58.
59. 方式一:在配置文件中设置lazy属性为false。
60. 方式二:在代码块中先获取非Id的数据
61.
62. 更新数据使用...
63.
64.
65.
66.多对一单向关联(操作方式):
67.
68. 1. 在多的一方添加一的一方的实体作为属性
69.
70. 2. 配置文件中使用<many-to-one>标签,如:
71. <many-to-one name="group"
72. class="com.org.bean_many2one.Group" column="groupId" />
73. 3. 保存数据
74. 添加一的一方的数据
75. 添加多的一方的数据并将一的Object放入set()中
76.
77.一对多单向关联(操作方式):
78.
79. 1. 在一的一方添加set集合,并设置get和set属性如
80. private Set users = new HashSet(0);
81. 2.配置文件中使用<set>标签,如:
82. <set name="users">
83. <key column="gid" />
84. <one-to-many class="com.org.bean_one2many.User" />
85. </set>
86.
87. 3. 保存数据(先save多的一方,在使用集合将对象add进去):
88.
89. User user1 = new User();
90. user1.setUname("xiaoling");
91. session.save(user1);
92.
93. Group group = new Group();
94. group.setGname("北大");
95. group.getUsers().add(user1);
96.
97. session.save(group);
98. tx.commit();
99.
100.
101.一对多双向关联
102.
103. 1. 一的一方添加set集合属性
104. private Set users = new HashSet(0);
105. 配置文件:
106. <set name="users">
107. <key column="gid" />
108. <one-to-many class="com.org.bean_one2many2.User" />
109. </set>
110. 2. 多的一方添加一的一方的为属性,并设置get和set方式
111. private Group group ;
112. 配置文件:
113. <many-to-one name="group"
114. class="com.org.bean_one2many2.Group" column="gid" />
115.
116.
117.
118.多对多关联
119.
120. 1. 在A方使用Set集合为属性,在B那边使用A作为属性。
121. 2. 在A的一方配置配置文件
122. <set name="users">
123. <key column="uid"/>
124. <one-to-many class="com.org.bean_many2many.User"/>
125. </set>
126.
127. 在B的一方配置配置文件
128. <many-to-one name="group"
129. class="com.org.bean_many2many.Group" column="groupId" />
130.
131.
132.
133.**************************************************************
134.级联 cascade删除数据:
135.
136. 使用cascade,其属性有all 、 save-update 、 delete 、 none。
137. 一般使用save-update即可。
138. 1. cascade=“delete” :删除数据时,如果外键在允许为空的情况下可以
139. 执行操作,删除后多的一方为所关联的数据将会时Null,
140. 2.一般情况下不使用该操作,其危险性较高。
141.
142.
143.
144.inverse 属性
145. 针对多对多的关联,如果其中某一方设置inverse为true,那么这一方及放弃
146.他们之间的关联关系。不会出现双方一起维护信息而引起的数据冗余。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值