1.(1).hibernate是一个持久性框架,ORM(对象--关系映射)包括:有hibernate,mybatis
(2).Hibernate的作用就是介于Java与JDBC之间的一个持久层,它通过建立与数据库表之间的映射来操纵数据库。
(3)
1)瞬时态transient 例如:Student s=new Student(); s.setName("aa"),都是瞬时态
2)持久态persistent,对象被保存到数据库中了(包括插入的数据和更新的数据),前提是连接没有关闭
3)游离态,对象被保存到数据库中之后,连接已经关闭,但对象没有销毁,称为游离态,例如:session.close();
2.hibernate里面一级缓存,如果你不清除一级缓存,比如你做了一个查询,第一次是从数据库里面查的,但是第二次查询就是从缓存里面做的查询,用session的clear0方法,去清除所有的缓存,evict()清除指定的缓存,refresh()重新查询数据库,用来更新缓存的内容。
3.hibernate里面的一对多关系和多对多关系<many-to-one ></many-to-one> <many-to-many>
<!--本类属性名字,lazy是否延迟加载-->
<set name="movies" lazy="false">
<--对应的列-->
<key column="typeid"></key>
<!-- set集合泛型,的那个类 -->
<one-to-many class="Movie"/>
</set>
private Type type;//类里面的属性
<many-to-one name="type" column="typeid" class="Type"></many-to-one>
//多对多关系
<!-- 让学生维护关系,inverse="true"让对方级联 -->
<set name="students" table="t_c_courses" inverse="true">
<!-- 自身对象与中间表关联的字段 -->
<key column="courseId"></key>
<!--关联类,关联的中间表的外键值-->
<many-to-many class="Student" column="studentId"></many-to-many>
</set>
4.
1)save();//save方法可以更新持久态状态的对象,添加游离态对象,如果不开事物没办法更新
2)persist()//不保证立即执行,可能要推迟,添加
3)get()//根据id查询,立即查询
4)select();//查询
5)update();//update方法可以更新游离态的对象或者更新一个给定了id(数据库中有对应的ID)的瞬时态的对象
6)delete()//根据id值删除
7)load();//load和get的区别在于get立即查询出要使用的对象,而load会延迟加载,当使用此对象时才即时从数据库中取得对象
8)saveOrUpdate();//自动检测,看你是更新还是添加,有id字段是更新,没有id字段是更新
动态更新的设置:POJO的映射文件中的<class>节点设置dynamic-update="true",这样只会更新你存的数据,不会把其他数据设置成空
10)list()查询没有缓存,需要每次查询
11)iterate()查询之后有缓存,再次需要的话,直接用就行,框架带的查询方法都是有缓存的
5.可以自己写hql语句,sql语句
6.也用二级缓存,但是用的少
本文深入探讨Hibernate框架,涵盖其作为持久层的作用、对象关系映射(ORM)概念、瞬时态、持久态及游离态的区别,以及缓存机制、一对多与多对多关系处理、核心API使用方法和HQL查询技巧。
4271

被折叠的 条评论
为什么被折叠?



