Hibernate学习笔记

来源:互联网 发布:淘宝抢红包软件被骗 编辑:程序博客网 时间:2024/06/05 10:37

 ORM,对象关系映射。
“类”到“表”的映射。

sesion对象,含有对对象和表的操作。如:s.save();

配置文件:hibernate.cfg.xml
映射文件:user.hbm.xml  (user对象)
在配置文件中,要注明映射文件。

Hibernate可以自动生成SQL

“事务没有提交,回滚了。”

 -------------------------------------------------------------------------------------------

对象状态
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。
持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。
脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。

 

----------------------------------------------------------------------------------------------------------------------------
HibernateUtil ,hibernate工具类。

HQL,查对象。

 

dialect ,方言,识别数据库。

Criteria ,标准,对对象进行查询。

Criteria c=s.createCriteria(User.class);

c.add(Restrictions.eq(“name”,name));

Restrictions,HQL加条件查询。

------------------------------------------------------------------

Configuration cfg;

Configuration cfg; cfg对象对应配置文件,解析配置文件,完成hibernate初始化。
sessionFactory=cfg.buildSessionFactory();
配置文件里的东西在cfg对象里面都有。
-----------------------------------------------------------------------------------------------------------------------

Hibernate对象中,集合类,应为接口,面向接口编程。
Cascade , 主对象进行某种操作时,是否对其关联的从对象也做类似操作。
invers ,放弃维护一对多,维护关系更新外键。

“对象的继承”到“表”的映射。


懒加载,少了一次数据库的交互,避免不必要的数据查询,因为访问数据库的成本高。
User user1=(User)s.load(userclass,id);
user1, 是一个代理。
配置文件,lazy=”proxy”,什么时候加载相关联的属性,延迟抓取。必要时才访问数据库。
one-to-many, 只抓取部门,不抓取员工容器。(容器中包含员工对象)
session里有个缓存,可理解为有个Map。
session.evict(obj),会把指定的缓冲对象进行清除
session.clear(),把缓冲区内的全部对象清除,但不包括操作中的对象。
Hibernate, 一级缓存,二级缓存。需要配置二级缓存。
分布式缓存,中央缓存。
-------------------------------------------------------------------------------------------------------

JTA Transaction,跨数据库的事务。
事务打开,提交,回滚。
事务的控制,由业务逻辑层。

悲观锁,单人占用资源,上锁,不让其他线程进入。
乐观锁,多线程对公共资源上锁,加版本号,可区别多线程。

C3PO,是一种连接池。

------------------------------------------------------------------------------------------------------------------

session,代表一个和数据库的连接,在B/S系统中,一般不会超过一个请求。
sessionFactory,一个数据库对应一个sessionFactory,生命周期长,一般在整个系统生命周期内有效,sessionFactory保存着和数据库连接的相关信息和映射信息。

s.flush()方法,让一级缓存与数据库同步,Hibernate让增、删、改进行批处理,减少对数据库的访问。
Hibernate一级缓存溢出。
一个持久类,应配有一个映射文件。

 

 

 

 

 

 

原创粉丝点击