public void testQuery(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
/**
* 会出现N+1问题,所谓的N+1值得是发出了N+1条sql语句
*
* 1:发出一条查询id列表的语句
*
* N:根据id发出N条sql语句,加载相关的对象
*/
Iterator iter=session.createQuery("from Student").iterate();
while(iter.hasNext()){
Student student=(Student)iter.next();
System.out.println(student.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
public void testQuery(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
List students=session.createQuery("from Student").list();
System.out.println("---------------------------------");
/**
* 避免了N+1问题
*
* 因为执行list操作后会将数据放到session的缓存中(一级缓存),所以采用iterate的时候
* 首先会发出一条查询id列表的语句,再根据id到缓存中加载相应的数据,如果缓存中存在与之匹配的数据
* 则不再发出根据id查询的sql语句,直接使用缓存中的数据
*
* Iterate方法如果缓存中存在数据,它可以提高性能,否则出现N+1问题
*/
//可以使用as别名
Iterator iter=session.createQuery("from Student").iterate();
while(iter.hasNext()){
Student student=(Student)iter.next();
System.out.println(student.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void testQuery1(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
//返回结果集属性列表,元素类型和实体类中的属性类型一致
List students=session.createQuery("from Student s where s.classes.name like '%2%'").list();
for(Iterator ite=students.iterator();ite.hasNext();){
Student obj=(Student)ite.next();
System.out.println(obj.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
public void testQeury(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
List list=session.createSQLQuery("select * from t_student").list();
for(Iterator ite=list.iterator();ite.hasNext();){
Object[] obj=(Object[])ite.next();
System.out.println(obj[0]+","+obj[1]);
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
//内连接
@SuppressWarnings({ "unchecked", "rawtypes" })
public void testQuery(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
//返回结果集属性列表,元素类型和实体类中的属性类型一致
List students=session.createQuery("select s.name,c.name from Student s join s.classes c").list();
for(Iterator ite=students.iterator();ite.hasNext();){
Object[] obj=(Object[])ite.next();
System.out.println(obj[0]);
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void testQuery(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
//返回结果集属性列表,元素类型和实体类中的属性类型一致
List students=session.createQuery("select s.name,c.name from Student s left join s.classes c").list();
for(Iterator ite=students.iterator();ite.hasNext();){
Object[] obj=(Object[])ite.next();
System.out.println(obj[0]);
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.src.hibernate.Student" table="t_student">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="createTime"></property>
<!-- 在多的一端Student中添加一行新的Classes列 ,并且列的名称要和Classes.hbm.xml的列明相同-->
<many-to-one name="classes" column="classesid"></many-to-one>
</class>
<query name="queryStudent">
<![CDATA[
select s from Student s where s.id<?
]]>
</query>
</hibernate-mapping>
//外置命名查询
@SuppressWarnings({ "unchecked", "rawtypes" })
public void testQuery(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
List students=session.getNamedQuery("queryStudent").setParameter(0, 10).list();
for(Iterator ite=students.iterator();ite.hasNext();){
Student obj=(Student)ite.next();
System.out.println(obj.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有