标签‘Hibernate’

使用Spring的getHibernateTemplate()进行批处理(JDBC兼容方案)

一直很抵触hibernate,原因不多说,总知是能不用就不用。最近项目有大量数据导入的需求,一直出现连续导入10w左右就内存溢出之类的情况,开启事物,分页flush session还是挺慢,换对象为SQL,拼装语句块直接执行效果也不理想。看到网上说的使用传统批处理速度要高10倍左右,于是试了试,还算可以。

由于项目其他地方有采用hibernate,甚至还用了iBATIS,不能随意更换框架或者改动接口。

网上很多采用sessionFactory.connection();获取Connection的文章,用过的朋友可能就知道,这个方法在Hibernate3.3.2版本中已被弃用。
替代方法:SessionFactoryUtils.getDataSource(sessionFactory).getConnection();
也可以直接使用:((SessionFactoryImplementor)sessionFactory).getConnectionProvider().getConnection();

获取到Connection后就好说了,做法完全是传统Jdbc的。通过这个方法单独实现一个大批量插入的接口也不是什么难事了,这里不再赘述。

Hibernate中XML映射元素配置详解

对象关系的映射是用一个XML文档来说明的。映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等。下面从一个映射的例子开始讲解映射元素,映射文件的代码如下。

组件应用的方法

组件有两种类型,即组件(component)和动态组件(dynamic-component)。 查看更多...

Hibernate批量更新、删除处理代码效率分析

批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据。

以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段:

tx = session.beginTransaction();
Iterator customers=session.find("from Customer c where c.age>0").iterator();
while(customers.hasNext()){
Customer customer=(Customer)customers.next();
customer.setAge(customer.getAge()+1);
}
tx.commit();
session.close(); 查看更多...

整合Spring与Hiberante3方法总结

最近做项目,第一次整合spring、hibernate、struts,这里收集点资料,做下参考。学j2ee的都知道,在Spring中整合Hibernate也算是需要掌握的基础知识了,整合的过程比整合Struts相对来说要简单许多,我们要实现的目标是整合,思路就是让spring容器来管理SessionFactory,这样就可以使用Spring的声明式事务了。

在 Spring 中配置 SessionFactory,可以利用Spring提供的 LocalSessionFactoryBean 工厂 Bean, 声明一个使用 XML 映射文件的 SessionFactory 实例。需要为该工厂 Bean 指定 configLocation 属性来加载 Hibernate 配置文件。例如:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="hibernate.cfg.xml"></property>
</bean>

这样就可以在Bean中注入SessionFactory了。 查看更多...

简单分析Hibernate分页查询的原理

本文从一个简单的实例来分析,学过Hibernate的朋友都知道,Hibernate 可以实现分页查询,例如:
从第2万条开始取出100条记录

Query q = session.createQuery("from Cat as c");
q.setFirstResult(20000);
q.setMaxResults(100);
List l = q.list();

那么Hibernate底层如何实现分页的呢?实际上Hibernate的查询定义在net.sf.hibernate.loader.Loader这个类里面 查看更多...

简单配置Hibernate步骤(MySQL环境)

Hibernate配置文件可以有两种格式,一种是 hibernate.properties ,另一种是 hibernate.cfg.xml 后者稍微方便一些,当增加hbm映射文件的时候,可以直接在 hibernate.cfg.xml 里面增加,不必像 hibernate.properties 必须在初始化代码中加入。

但不管怎么说,两种的配置项都是一样的,下面详细介绍:

在Hibernate的src目录下有一个 hibernate.properties 模板,我们不必自己从头写,修改模板就可以了。hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'。这个配置意思是当你在Hibernate里面输入true的时候,Hibernate会转化为1插入数据库,当你在Hibernate里面输入false的时候,Hibernate会转化为0插入数据库,后面的Y,N同理。 查看更多...

J2EE宝典级框架学习总结

现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate。似乎这些框架成为了一个人是否精通java,是否会写J2EE程序的唯一事实标准和找工作的必备基础。

然而,如果在面试的时候问这些程序员,你们为什么要学习这些框架?这些框架的本质到底是什么?似乎很少很少有人能够给我非常满意的答复。因为他们都 在为了学习而学习,为了工作而学习,而不是在真正去深入了解一个框架。其实所有的人都应该思考这样的问题:为什么要学习框架?框架到底给我带来了什么?接 下来,我们以登录作为一个最简单的例子,来看看不同的年代,我们是怎么写Web程序的。

后来,我们放弃了在页面上写逻辑。 查看更多...