注解的实体关联映射Hibernate的缓存机制.pptx

注解的实体关联映射Hibernate的缓存机制.pptx

ID:52990852

大小:285.09 KB

页数:21页

时间:2020-04-09

注解的实体关联映射Hibernate的缓存机制.pptx_第1页
注解的实体关联映射Hibernate的缓存机制.pptx_第2页
注解的实体关联映射Hibernate的缓存机制.pptx_第3页
注解的实体关联映射Hibernate的缓存机制.pptx_第4页
注解的实体关联映射Hibernate的缓存机制.pptx_第5页
资源描述:

《注解的实体关联映射Hibernate的缓存机制.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Hibernate第五天注解的实体关联映射Hibernate的缓存机制单向的one-to-many@OneToMany注解:是指示在多的一方使用1的一方的主键作为其外键,关联1的一方@JoinColumn指明在多的一方关联1的一方的外键名称单向的many-to-one@ManyToOne@JoinColumn在多的一方引用1的一方的变量getter方法上加上以上两个注解@ManyToOne表示在本类对应的数据库表中生成关联1的一方主键的外键其中@JoinColumn中的name表示当前实体bean对应的数据库表与1的一方的数据库表关联的外键

2、名称双向的one-to-many在1的一方,使用@OneToMany注解其中mappedBy的值对应另一方对本实体bean的引用变量在多的一方,使用@ManyToOne注解和@JoinColumn注解,其中@JoinColumn指示在多的一方对应的数据库表中生成外键关联1的一方。双向many-to-many@ManyToMany注解@JoinTable在双向Many-to-Many关系映射中,包含两方面,拥有方和被拥有方(inverse一方)。在拥有方指明通过哪张表来和被拥有方维护映射关系。被拥有方使用@ManyToManyCascadeT

3、ype.REFRESH:级联刷新,当多个用户同时作操作一个实体,为了用户取到的数据是实时的,在用实体中的数据之前就可以调用一下refresh()方法!CascadeType.REMOVE:级联删除,当调用remove()方法删除A实体时会先级联删除B的相关数据!CascadeType.MERGE:级联更新,当调用了Merge()方法,如果A中的数据改变了会相应的更新B中的数据,CascadeType.PERSIST:级联保存,当调用了Persist()方法,会级联保存相应的数据CascadeType.ALL:包含以上所有级联属性。什么是缓存

4、缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命 中"),则就直接把命中的数据作为结果加以利用,避免了大量发送SQL语句到数据库查询的性能损耗。缓存策略供应商提供了HashTable缓存,EHCache,OSCache,SwarmCache,jBoss Cathe2,这些缓存机制,其中EHCache,OSCa

5、che是不能用于集群环境(Cluster Safe)的,而SwarmCache,jBoss Cathe2是可以的。HashTable缓存主要是用来测试的,只能把对象放在内存中,EHCache,OSCache可以把对象放在内存(memory)中,也可以把对象放在硬盘(disk)上。缓存分类一、Session缓存(又称作事务缓存,一级缓存):Hibernate内置的,不能卸除。缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,当Session被关闭后,缓存也就结束生命周期。二、SessionFacto

6、ry缓存(又称作应用缓存,二级缓存):使用第三方插件,可插拔。缓存范围:缓存被应用范围内的所有session共享,不同的Session可以共享。这些session有可能是并发访问缓存,因此必须对缓存进行更新。缓存的生命周期依赖于应用的生命周期,应用结束时,缓存也就结束了生命周期,二级缓存存在于应用程序范围。一级缓存的管理和使用数据放入缓存:1.save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。2.get()和load()。当session对象调用get()或load()方法从数据库

7、取出一个对象后,该对象也会被放入到session的缓存中。3.使用HQL和QBC等从数据库中查询数据。一级缓存的清除1.evict()将指定的持久化对象从缓存中清除,释放对象所占用的内存资源,指定对象从持久化状态变为脱管状态,从而成为游离对象。2. clear()将缓存中的所有持久化对象清除,释放其占用的内存资源。其他操作1. contains()判断指定的对象是否存在于缓存中。2. flush()刷新缓存区的内容,使之与数据库数据保持同步。二级缓存的配置、管理和使用当我们重启一个Session,第二次调用load或者get方法检索同一个对

8、象的时候会重新查找数据库,会发select语句信息。原因:一个session不能取另一个session中的缓存。性能上的问题:假如是多线程同时去取Category这个对象,loa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。