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.他们之间的关联关系。不会出现双方一起维护信息而引起的数据冗余。
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.他们之间的关联关系。不会出现双方一起维护信息而引起的数据冗余。