package org.eimhe.dao; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eimhe.HibernateSessionFactory; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; public class DayMachineInfoDao extends AbstractDao { private Session session; private Transaction tx; public List findByYearAndMonthAndDayAndPowerPlantIdAndMachineNo(String year,String month,String day,long powerPlantId,long machineNo){ List objects=null; try{ startOperation(); Query query=session.createQuery("from DayMachineInfo d where d.id.year="+year+" and d.id.month="+month+" and d.id.day="+day+ " and d.id.powerPlantId="+powerPlantId+" and d.id.machineNo="+machineNo); objects=query.list(); tx.commit(); }catch(HibernateException e){ handleException(e); }finally{ session.close(); } return objects; } public List findReturnPeriodIdAndTotalContractAndAdjustAndRealTotalContract(String year,String month,String day,long powerPlantId,long machineNo){ List objects=null; try{ startOperation(); Query query=session.createQuery("select d.id.periodId,d.dayMachineContractQuantity,d.dayMachineRealtimeAdjustCapacity,"+ " d.dayMachineContractQuantity+d.dayMachineRealtimeAdjustCapacity as realTotalContract" + " from DayMachineInfo d where d.id.year=:year and d.id.month=:month and d.id.day=:day"+ " and d.id.powerPlantId=:powerPlantId and d.id.machineNo=:machineNo"); query.setString("year", year); query.setString("month", month); query.setString("day", day); query.setString("powerPlantId", String.valueOf(powerPlantId)); query.setString("machineNo", String.valueOf(machineNo)); objects=query.list(); tx.commit(); }catch(HibernateException e){ handleException(e); }finally{ session.close(); } return objects; } public List findReturnDayAndMonthContract(String year,String month,long powerPlantId,long machineNo){ List objects=null; try{ startOperation(); Query query=session.createQuery("select d.id.day,sum(d.dayMachineDecomposeMonthBidQuantity) as monthContract"+ " from DayMachineInfo d where d.id.year=:year and d.id.month=:month"+ " and d.id.powerPlantId=:powerPlantId and d.id.machineNo=:machineNo"+ " group by d.id.day"); query.setString("year", year); query.setString("month", month); query.setString("powerPlantId", String.valueOf(powerPlantId)); query.setString("machineNo", String.valueOf(machineNo)); objects=query.list(); tx.commit(); }catch(HibernateException e){ handleException(e); }finally{ session.close(); } return objects; } public List findReturnDayAndYearContractAndAdjustAndRealContract(String year,String month,long powerPlantId,long machineNo){ List objects=null; try{ startOperation(); Query query=session.createQuery("select d.id.day,sum(d.dayMachineDecomposeYearContractQuantity) as yearContract,"+ " sum(d.dayMachineRealtimeAdjustCapacity) as adjust,"+ " sum(d.dayMachineDecomposeYearContractQuantity)+sum(d.dayMachineRealtimeAdjustCapacity) as realContract"+ " from DayMachineInfo d where d.id.year=:year and d.id.month=:month"+ " and d.id.powerPlantId=:powerPlantId and d.id.machineNo=:machineNo"+ " group by d.id.day"); query.setString("year", year); query.setString("month", month); query.setString("powerPlantId", String.valueOf(powerPlantId)); query.setString("machineNo", String.valueOf(machineNo)); objects=query.list(); tx.commit(); }catch(HibernateException e){ handleException(e); }finally{ session.close(); } return objects; } public List findDayMachineInfoAndYearMachineInfoReturnMonthAndDayAndYearContractAndAdjustAndRealContract(String year,String month,long powerPlantId,long machineNo){ List objects=null; try{ startOperation(); Query query=session.createQuery("select d.id.month,d.id.day,sum(d.dayMachineDecomposeYearContractQuantity) as yearContract,"+ " sum(d.dayMachineRealtimeAdjustCapacity) as adjust,"+ " sum(d.dayMachineDecomposeYearContractQuantity)+sum(d.dayMachineRealtimeAdjustCapacity) as realContract"+ " from DayMachineInfo d where d.id.year=:year and d.id.month<=:month"+ " and d.id.powerPlantId=:powerPlantId and d.id.machineNo=:machineNo"+ " group by d.id.month,d.id.day"); query.setString("year", year); query.setString("month", month); query.setString("powerPlantId", String.valueOf(powerPlantId)); query.setString("machineNo", String.valueOf(machineNo)); objects=query.list(); // tx.commit(); query=session.createQuery("select '9999', '-1000',-10L,-10L,y.yearMachineBaseContractQuantity "+ " from YearMachineInfo y "+ " where y.id.year=:year and y.id.powerPlantId=:powerPlantId and y.id.machineNo=:machineNo"); query.setString("year", year); query.setString("powerPlantId", String.valueOf(powerPlantId)); query.setString("machineNo", String.valueOf(machineNo)); objects.add(query.list().iterator().next()); tx.commit(); }catch(HibernateException e){ handleException(e); }finally{ session.close(); } return objects; } public List findYearMachineInfoByYearAndPowerPlantIdAndMachineNo(String year,long powerPlantId,long machineNo){ List objects=new ArrayList(); try{ startOperation(); Query query=session.createQuery("select '9999', '-1000',-10L,-10L,y.yearMachineBaseContractQuantity "+ " from YearMachineInfo y "+ " where y.id.year=:year and y.id.powerPlantId=:powerPlantId and y.id.machineNo=:machineNo"); query.setString("year", year); query.setString("powerPlantId", String.valueOf(powerPlantId)); query.setString("machineNo", String.valueOf(machineNo)); objects.add(query.list().iterator().next()); tx.commit(); }catch(HibernateException e){ handleException(e); }finally{ session.close(); } return objects; } protected void startOperation() throws HibernateException{ session=HibernateSessionFactory.getSession(); tx=session.beginTransaction(); } }
|
相关推荐
然而,在使用 Hibernate 进行数据库操作时,经常会遇到 "No Hibernate Session bound to thread" 的错误信息。本文将详细介绍该错误的解决方案。 错误原因 "No Hibernate Session bound to thread" 错误信息通常是...
`Session`提供了在数据库中保存、更新和删除对象的方法,同时也负责加载或检索对象。它具有事务管理功能,并且实现了对数据库的脏检查(dirty-checking)和缓存机制。创建`Session`对象时通常通过`SessionFactory`,...
通过XML配置文件或注解,Hibernate能够将Java对象与数据库表进行映射,实现对象的创建、查询、更新和删除操作。 2. Hibernate 的核心组件: - Session:它是与数据库交互的主要接口,负责对象的持久化操作,如保存...
它同样在事务中执行,但使用HQL来删除指定ID的记录,避免了先查询再删除的步骤,提高了效率。 5. **模糊查询(Fuzzy Query)** - 示例代码中没有具体展示模糊查询,但通常可以使用HQL或Criteria API来实现。例如,...
3. **批处理**:批量插入、更新或删除操作可以显著提高效率。 4. **预编译SQL**:使用HQL或Criteria的预编译功能,可以减少SQL解析的时间。 5. **结果集映射优化**:避免使用“select *”,只选择需要的字段,减少...
Session则负责执行CRUD(创建、读取、更新、删除)操作,是事务处理的基本单位。Query接口提供了对HQL(Hibernate查询语言)和Criteria API的支持,使得数据库查询更加灵活和强大。 此外,本书还会深入到Hibernate...
5. CRUD操作:使用Session对象进行创建(save()或saveOrUpdate())、查询(load()、get()或createQuery())、删除(delete())和更新(update())操作。 6. 事务管理:由于数据库操作涉及数据的一致性,因此需要使用...
本篇内容将通过丰富的实例来深入探讨Hibernate的核心概念和技术,帮助读者从入门到精通,掌握其所有主要用法。** ### 一、Hibernate 概述 Hibernate 提供了一种在Java应用程序中管理关系数据库模型的机制。它通过...
本文将深入探讨在Hibernate中处理批量更新和批量删除的策略,以及如何优化这些操作,以提高数据库操作的效率。 ### 批量更新的常规方法 在Hibernate中,最直观的批量更新方式是通过循环遍历查询结果集,并对每个...
标题和描述提及的是"Hibernate javaclient 查询,更新小例子",这意味着我们将探讨使用Hibernate作为Java客户端库进行数据查询和更新的基本操作。Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者用面向...
本文将深入探讨在Hibernate应用中处理批量更新和批量删除的最佳实践,以及如何避免常见的性能陷阱。 ### 一、批量更新的基本概念 批量更新是指对数据库中的多条记录进行一次性更新操作,相较于单条记录更新,批量...
其中重点配置方法和Hibernate中普遍采用的方法链编程的使用。还需注意可以将组合主键构建成一个实体,这样在编程时更加直观。 05 05Hibernate_EntityLayerDesign : 实体层的设计,演示两种情况: 1) 数据库表:一张...
以下是如何使用Criteria API查询所有未删除的用户: ```java CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery<User> cq = cb.createQuery(User.class); Root<User> root = cq.from(User....
- 创建测试用例:为了更好地理解Hibernate的功能,可以创建一些测试用例,模拟数据库操作,如保存、查询、更新和删除对象,观察源码的执行流程。 - 调试源码:使用Eclipse的调试工具,设置断点,观察变量值的变化...
通过配置文件和注解,Hibernate可以自动将Java对象映射到数据库表,实现对象的保存、更新、删除和查询。在这个例子中,Hibernate可能会被用来定义实体类,配置映射文件,并编写SQL查询语句,以便从数据库中检索数据...
它提供了保存、更新、删除对象以及执行查询的能力。当我们想要实现模糊查询时,可以利用`Criteria` API或者`HQL`(Hibernate Query Language)来完成。例如,如果我们要查询一个名为`User`的实体类中所有名字包含...
对于更复杂的查询,如条件查询、分页查询等,可以使用HQL(Hibernate Query Language)或者JPA的`@NamedQuery`。HQL是面向对象的查询语言,与SQL类似但针对对象模型。例如,查找用户名为"test"的用户: ```java ...
- Session:它是Hibernate的核心接口,负责管理对象的生命周期,包括创建、加载、更新和删除对象。 - Transaction:在Hibernate中,事务是数据库操作的基本单元,用于确保数据的一致性和完整性。 - Entity:持久...
- Session:是Hibernate的主要工作单元,负责与数据库进行交互,提供了持久化对象的创建、查询、更新和删除等操作。 - SessionFactory:是Hibernate的配置中心,负责创建Session实例,一次应用只需要一个...