转转转!hibernate

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.Configurationcfg=newConfiguration().configre();

18.2.创建sessionFactoryfactory=cfg.buildSessionFactory();

19.3.创建sessionsession=factory.opensession();

20.4.打开事物Transactiontx=session.beginTransaction();

21.5.持久化操作session.save();...

22.6.提交事物tx.commint();

23.7.关闭session.close();

24.

25.

26.使用工具简化操作(操作方式)

27.1.添加hibernate支持

28.2.配置DBBrowser配置数据源

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()加载其关联数据时,将抛出onsessionException

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-onename="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.privateSetusers=newHashSet(0);

81.2.配置文件中使用<set>标签,如:

82.<setname="users">

83.<keycolumn="gid"/>

84.<one-to-manyclass="com.org.bean_one2many.User"/>

85.</set>

86.

87.3.保存数据(先save多的一方,在使用集合将对象add进去):

88.

89.Useruser1=newUser();

90.user1.setUname("xiaoling");

91.session.save(user1);

92.

93.Groupgroup=newGroup();

94.group.setGname("北大");

95.group.getUsers().add(user1);

96.

97.session.save(group);

98.tx.commit();

99.

100.

101.一对多双向关联

102.

103.1.一的一方添加set集合属性

104.privateSetusers=newHashSet(0);

105.配置文件:

106.<setname="users">

107.<keycolumn="gid"/>

108.<one-to-manyclass="com.org.bean_one2many2.User"/>

109.</set>

110.2.多的一方添加一的一方的为属性,并设置get和set方式

111.privateGroupgroup;

112.配置文件:

113.<many-to-onename="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.<setname="users">

123.<keycolumn="uid"/>

124.<one-to-manyclass="com.org.bean_many2many.User"/>

125.</set>

126.

127.在B的一方配置配置文件

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

相关推荐