- 1、Hibernate是一种ORM框架,也就是持久层的框架,应用于DAO层,是对JDBC的一种封装,可以让程序直接通过面向对象的方式去完成对数据库的 *** 作,可以做到不用手写SQL语句就能完成对数据库的各种 *** 作。
- 2、ORM框架,那么什么是ORM?
O:Object
R:Relational
M:Mapping
ORM就是对象关系映射(Object Relational Mapping,简称ORM),关注的是对象和数据库中对应表的关系。通过描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。提供了对数据库的映射,不用SQL编码,能够像 *** 作对象一样从数据库中获取数据。
- 1、hbm.xml
hbm.xml是对象和表映射的配置文件,命名规则: 类名.hbm.xml
例如数据库有一个user表,在项目中有一个User类,做如下关联:
public class User { private int id; private String username; private String mobile; }
编写User.hbm.xml
- 2、hibernate.cfg.xml
com.mysql.jdbc.Driver jdbc:mysql://192.168.1.23:3306/jl root 123456 org.hibernate.dialect.MySQL5Dialect true true create
- 3、测试
package com.jl.domain; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.classic.Session; public class Test { public static void main(String[] args) { //创建对象 User user = new User(); user.setUsername("张三"); user.setMobile("13111111234"); //获取加载配置管理类 Configuration configuration = new Configuration(); //默认加载src/目录下的hibernate.cfg.xml配置文件 configuration.configure(); //创建Session工厂对象 SessionFactory factory = configuration.buildSessionFactory(); //得到Session对象 Session session = factory.openSession(); //开启事务 Transaction transaction = session.getTransaction(); transaction.begin(); //把数据保存到数据库中 session.save(user); //提交事务 transaction.commit(); //关闭Session session.close(); } }
上面代码执行完成,数据库就会自动建表,并且包数据存入数据库中。
- 4、其他 *** 作:
session.save(obj); // 保存一个对象
session.update(obj); // 更新一个对象
session.saveOrUpdate(obj); // 保存或者更新的方法
session.get(javaBean.class, int id); // 传入对应的class和id就可以查询
session.load(javaBean.class, int id); // 支持懒加载,
get和load都是根据主键查询,区别是session.get调用就发送SQL语句查询数据库,而session.load会延迟加载,调用后并不会马上发送SQL语句,而是后面用到这个对象的时候才会发送SQL语句查询数据;
- 1、一级缓存
一级缓存是Hibernate框架自带的,我们无法手动干预,由hibernate自己管理,一级缓存是session级别的缓存,只有在使用同一个session *** 作数据库才会生效。
一级缓存常见 *** 作:
1) flush : 修改一级缓存数据,针对内存 *** 作, 需要在session执行flush *** 作时,将缓存变化同步到数据库,只有在 缓存数据 与 快照区 不同时,生成update 语句;
2) clear : 清除所有对象 一级缓存 ;
3) evict : 清除一级缓存 指定对象 ;
4) refresh :重新查询数据库,更新快照和一级缓存; - 2、二级缓存
二级缓存是sessionFactory缓存,它可以被多个session共享。
1)二级缓存的并发策略:
transactional : 提供Repeatable Read事务隔离级别 ,缓存支持事务,发生异常的时候,缓存也能够回滚;
read-write : 提供Read Committed事务隔离级别, 更新缓存的时候会锁定缓存中的数据;
nonstrict-read-write : 导致脏读, 很少使用 ;
read-only: 数据不允许修改 ,只能查询;
2)二级缓存配置步骤:
1.导入jar包
ehcache-1.5.0.jar,依赖 backport-util-concurrent 和 commons-logging
2.开启二级缓存,在hibernate.cfg.xml文件中配置
true
3.配置二级缓存提供商
org.hibernate.cache.EhCacheProvider
4.设置二级缓存并发访问策略,有两种方式(设置哪些数据保存到二级缓存中)
方式1.一种是在hbm.xml文件中配置
方式2.一种是hibernate.cfg.xml
5.导入二级缓存的配置文件
在src中 配置 ehcache.xml ,将 ehcache-1.5.0 jar包中 ehcache-failsafe.xml 改名 ehcache.xml 放入 src 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)