首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

走走转!hibernate

2012-09-10 
转转转!hibernate01.Hibernate课堂纪要02.03.为什么要使用Hibernate04.解决JDBC繁琐的代码问题。05.Hiberna

转转转!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.        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.            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  />  
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  />  
109.        </set>      
110.    2.  多的一方添加一的一方的为属性,并设置get和set方式  
111.        private Group group ;  
112.        配置文件:  
113.            <many-to-one name="group"   
114.                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 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.他们之间的关联关系。不会出现双方一起维护信息而引起的数据冗余。

热点排行