一.查询
Session s=HibernateSessionFactory.getSession();
Transaction tra=s.beginTransaction();
Query q=s.createQuery("from Company where name=:name");
q.setParameter("name","baobao");
1.HQL查询
from Company c //Company是映射类而不是表表名,c:是别名。查找对应表所有的记录
//不能写成from * from Company c
2.传统SQL方式查询 from Company c where c.name='baobao' //SQL方式查询
3.占位符(?)式查询 参数索引以0开始,而Jdbc的PrepareStatement是以1开始
Query q=session.createQuery("from Company c where c.name=? and c.id=?");
q.setParameter(0,"baobao");
q.setParameter(1,5);
List l=q.list(); //查询条件name=baobao and id=5的记录
4.命名参数赋值(推荐) 如 :name
Query q=s.createQuery("from Company c where c.name = :name and c.id = :id");
q.setParameter("name","baobao");
q.setParameter("id",5);
List l=q.list(); //查询条件name=baobao and id=5的记录
5.命名查询方式:主要是将HQL放在相应类的映射文件中
如:在Company.hbm.xml文件中在<class></class>外面加入
<query name="Company.byname">
<![CDATA[FROM Company c WHERE c.name= :name and c.id= :id]]>
</query>
然后在JAVA文件中
Query q=s.getNamedQuery("Company.byname");
q.setParameter("name","baobao");
q.setParameter("id",5);
List l=q.list();
6.连接查询(多表查询)
from Company c join c.departments d where c.id=5 and d.name=''[=c.departments.name] order by time desc
//==select * from company inner join departments on company.departmetns_id=departmetns.id
//[inner] join 不满足条件的对象被过滤
//left join 返回连接左边的对象,右边即使没有匹配的对象也将返回
//right join 返回连接右边的对象,左边即使没有匹配的对象也将返回
7.in查询
String hql="FROM A WHERE A.ID IN (:alist)";
Query query = getSession().createQuery(hql);
query.setParameterList("alist", a);
二.更新
1.更新操作update
Query q=s.createQuery("update CourseMonney set score= :score where studentId= :stuId and courseId= :teaId");
q.setParameter("stuId","20070113");//注意:参数类型必须与字段类型一致
q.setParameter("teaId",12);
q.setParameter("score",addscoreForm.getScore());
q.executeUpdate();
//相当于"update coursemonney set score=12 where studentid='20070113 and courseid=12'"
三.删除
1.Query q=s.createQuery("delete CourseMonney as c where studentId= :stuId and courseId= :teaId");
q.setParameter("stuId","20070113");//注意:参数类型必须与字段类型一致
q.setParameter("teaId",12);
q.executeUpdate();
//相当于"delete from coursemonney where studentid='20070113 and courseid=12'"
2.使用HQL语句,动态参数
List<String> list = Arrays.asList(ids.split(","));
String hql = "delete from Contract_Site where contract.id in(:cid)";
Query q = super.createQuery(hql);
q.setParameterList("cid", list);// 注意:参数类型必须与字段类型一致
q.executeUpdate();
hibernate会根据list数量生成SQL:delete from table where id in (?,?...);
相关推荐
### Hibernate知识点总结 #### 一、Hibernate概述 Hibernate是一个开源的ORM(Object Relational Mapping,对象关系映射)框架,用于Java应用与关系型数据库之间的交互。它通过使用描述对象和数据库之间映射的元...
Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系数据库的方式。通过 ORM,Hibernate 可以将 Java 类与数据库表之间的映射关系自动化,从而简化数据访问层的...
《Hibernate4总结文档》 Hibernate4作为一款强大的Java对象关系映射框架,简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。本文将深入探讨Hibernate4的配置和使用,帮助开发者更好地理解...
总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...
总结,这个“简单的Hibernate应用”提供了学习和实践Hibernate的基础,包括如何配置、创建实体、执行查询以及在Web环境中集成Hibernate的方法。通过深入理解并熟练运用这些知识,开发者可以更高效地进行Java数据库...
【Hibernate 简单 PPT 总结】 Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作。通过提供一套API和元数据,Hibernate允许开发者将业务对象直接映射到数据库表,从而避免了...
- **SessionFactory**: Hibernate的核心组件,负责创建Session实例,它是线程不安全的,通常在应用启动时创建并全局共享。 - **Session**: 实现业务逻辑的主要接口,代表与数据库的一次会话,负责对象的持久化操作...
以上总结了Hibernate的一些核心概念和面试中可能遇到的关键知识点。了解这些概念有助于更好地掌握Hibernate框架的使用,以及如何高效地利用Hibernate进行数据库操作。此外,对于面试者而言,熟悉这些概念也能帮助...
Hibernate 是一个流行的 Java ORM(对象关系映射)框架,它使得开发者可以用面向对象的方式来处理数据库操作,极大地简化了Java应用程序中的数据访问层。Hibernate 对 JDBC 进行了封装,使得程序员无需编写大量的 ...
**hibernate学习总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。在Java世界中,Hibernate 提供了一种在对象模型和关系数据库之间进行转换的机制,使得开发...
**HIBERNATE技术总结** Hibernate 是一个流行的 Java 应用程序框架,它提供了一种对象关系映射(ORM)解决方案,将数据库操作转化为面向对象的编程。此文档旨在研究和对比 Hibernate 技术的不同方面,帮助开发者更...
总结所述,Hibernate为Java开发者提供了强大的数据库操作工具,通过理解并熟练运用其核心概念和技术,能极大地提升开发效率和应用质量。通过阅读提供的“hibernate课堂笔录_0906.txt”,可以进一步巩固这些知识,并...
本教程提供的"SSH应用开发-Hibernate应用入门.docx"文档,将详细讲解如何配置Hibernate环境,创建实体类,编写映射文件,以及如何进行基本的CRUD操作。对于初学者,这是一个很好的起点,通过学习可以掌握Hibernate的...
【Hibernate工作应用总结】 在IT行业中,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。以下是对Hibernate在实际工作应用中的总结,旨在帮助开发者更好地理解和使用...
总的来说,理解并熟练运用Hibernate的关联关系对于开发高效、可靠的Java应用程序至关重要。通过合理的关联设计,可以简化对象模型与数据库之间的转换,提高开发效率,减少潜在的错误。在实际项目中,开发者应根据...