在项目中使用Hibernate进行大数据量的性能测试,有一些总结, 1)在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session.clear()或者session. Evict(Object)在处理过程中,清除全部的缓存或者清除某个对象。
自从JPA于2006年首次被引入之后,它就得到了Java开发社区的广泛支持。该规范的下一个主要更新——2.0版本(JSR317)——将在2009年年底完成。JPA2.0引入的关键特性之一就是CriteriaAPI,它为Java语言带来了一种独特的能力:开发一种Java编译器可以在运行时验证其正确性的查询。CriteriaAPI还提供一个能够在运行时动态地构建查询的机制。本文将介绍CriteriaAPI和与之密切相关的元模型(metamodel)概念。
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate、TopLink等ORM框架的基础上发展而来的,具有易于使用、伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。着眼未来几年的技术走向,JPA作为ORM领域标准化整合者的目标应该不难实现。
Hibernate Tools for Eclipse Plugins 的安装和使用,这段时间事情比较多一直没有写博客,现在事情忙完了,公司的书柜里有一堆关于Hibernate、Struts和Spring的书,翻了翻发现书中的内容基本上都过时,我喜欢从官方网站上看资料学习最新的技术,这次是我阅读了Hibernate Tools的官方Documents后根据自己的实践总结的。
Eclipse中反向生成hibernate实体类+jpa注释
Hibernate 3 配置文件参数汇总
Hibernate注释大全
Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性。对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现这两个属性实在是难以理解,无奈只好将这个两个属性解释工作交给了Google和Baidu,查看了许多牛人的解释,加上自己在Eclipse上的调试,对"inverse"和"cascade"这两个属性有了一定的见解。
Hibernate是笔者使用了超过5年的优秀ORM框架,虽然说使用了5年,但笔者并没有把握说自己真正意义上的精通Hibernate。说道熟悉Hibernate还差不多,因为Hibernate用法和特性只要使用过或许都很简单,但是要做到发挥Hibernate最大限度的潜力,Hibernate优化,或者说Hibernate性能优化笔者仅仅是初窥门径而已。这里摘录一篇牛人对于Hibernate优化的文章,希望对自己以后的使用指引下方向吧。这篇是上一篇的续作,着实是不错,推荐hibernate用户,尤其是像我一样的用户看看,会有收获的
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
Hibernate悲观锁:在数据有加载的时候就给其进行加锁,直到该锁被释放掉,其他用户才可以进行修改;Hibernate乐观锁:在对数据进行修改的时候,对数据才去版本或者时间戳等方式来比较,数据是否一致性来实现加锁。
Hibernate关系映射
事务并发时可能出现的问题: ※丢失更新:两个事务A和B读入同一数据并修改,A事务修改后提交,但B事务仍在执行,B仍然是按照一开始读到是数据做修改,此时,A的修改就被丢失掉了! ※不可重复读:事务A读取数据后,事务B对数据执行更新操作[包括修改数据、增删记录],使A再次读取的数据与第一次读的不一致! ※读“脏”数据:【即不正确的数据】事务A修改了某一数据并将其写回磁盘,事务B读取同一数据后,A由于某种原因被撤销,这时A已修改过的数据恢复原值,而B读到的数据就与数据库中的数据不一致,则B读到的数据就是“脏”数据!
配置映射文件详解目标学习Hibernate的配置文件(hibernate.cfg.xml)学习Hibernate的映射声明(*.hbm.xml)Hibernate配置文件Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性每个Hibernate配置文件对应一个Configuration对象。
在向大家详细介绍Hibernate Session缓存之前,首先让大家了解下主配置,然后全面介绍延迟加载。
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。
Hibernate原理模拟 – 什么是O/RMapping以及为什么要有O/RMapping 常见的O/R框架(了解) hibernate基础配置(重点) ID生成策略(重点掌握AUTO) Hibernate核心开发接口介绍(重点) 对象的三种状态(了解) 关系映射(重点) Hibernate查询(HQL) 在Struts基础上继续完善BBS2009 性能优化(重点)
上次我们一起学习了用Criteria进行相关的操作,但由于Criteria并不是Hibernate官方推荐的查询方式,我们也并不多用。现在我们来看一下官方推荐的HQL,一起学习一下它的强大。说是HQL,也就是Hibernate查询语句,和SQL有什么区别呢?一个字母的区别,哈哈。
批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据。以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段。
当我们用HQL进行子查询的时候,如select * from Tree where pid in (select id from Tree,此时HIBERANTE就会报错,说什么*号错误之类的。但如果将*改为Tree类里的所有子段时就不会有问题了。就会像平时一样第一行数据返回一个Object[],然后你再根据Tree类里字段对Object[]数组里的值进行转换。这样一来比较麻烦。今天发现如果我SQL来查有一个方法可以返回一个对象的。