在hibernate.cfg.xml配置文件中配置
<property name="hibernate.jdbc.fetch_size">50</property>
//每次查询50条
<property name="hibernate.jdbc.batch_size">50</property>
//每次更新50条
posted @
2009-03-16 18:03 simplye 阅读(841) |
评论 (0) |
编辑 收藏
1 List students =session.createQuery("select c.name, count(s) from Student s join s.classes c " +
2 "group by c.name order by c.name").list();
3 for (Iterator iter=students.iterator(); iter.hasNext();) {
4 Object[] obj = (Object[])iter.next();
5 System.out.println(obj[0] + ", " + obj[1]);
6 }
posted @
2009-03-05 22:43 simplye 阅读(869) |
评论 (0) |
编辑 收藏
1.
List students = session.createQuery("select c.name, s.name from Student s inner join s.classes c").list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
Object[] obj = (Object[])iter.next();
System.out.println(obj[0] + "," + obj[1]);
}
2.
//左连接
List students = session.createQuery("select c.name, s.name from Classes c left join c.students s").list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
Object[] obj = (Object[])iter.next();
System.out.println(obj[0] + "," + obj[1]);
}
posted @
2009-03-05 22:37 simplye 阅读(2610) |
评论 (0) |
编辑 收藏
/*
构建HQL语句进行查询
*/
1.
Query query = session.createQuery("select s.id, s.name from Student s where s.name like ? ");
//用?占位符
query.setParameter(0, "%1%");
//添加查询条件
List students = query.list();
//返回查询列表
2.
//可以用in()来进行多条件查询,使用setParameterList把所有的查询的条件放入list中
//可以用 :参数 来传递参数
List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids) ")
.setParameterList(myids, new Object[]{1,2})
.list();
3.
//日期查询语句
List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=? ")
.setParameterList(0, 2009-1)
.list();
4.
//日期段的查询
//首先构建一个日期对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List students = session.createQuery("select s.id, s.name from Student s where s.createTime between ? and ? ")
.setParameter(0, sdf.setparse("2009-1-1 00:00:00"))
.setParameter(1, sdf.setparse("2009-2-1 23:59:59"))
.list();
posted @
2009-03-05 16:20 simplye 阅读(6410) |
评论 (1) |
编辑 收藏
web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。
JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。
posted @
2009-03-05 11:01 simplye 阅读(2609) |
评论 (0) |
编辑 收藏
1.
/**
单一属性查询
*/
List s = session.createQuery("select name from Student").list();
//返回的类型与实体类中相应的属性类别一直.
2.
/**
多个属性查询
*/
List s = session.createQuery("select id, name from Student").list();
//查询多个属性,返回值为对象的数组
//数组元素类型和对应的实体类型一直
//数组长度与查询的条件相同
3./**
返回student实体类,
还要在实体类中提供空的构造函数,和带参数的构造函数
*/
List s = session.createQuery("select new Student(id, name) from Student").list();
//返回的便是实体类
4.
可以实用别名,用as
5.
/*
list()与iterate()方法的区别.
*/
iterate()迭代中会发生N+1的现象,它与session的绑定.当session在缓存中存在时用iterate()会提高一定的效率.没有在发生N+1现象
list()只会向数据库查询的SQL,除非配置查询缓存.
posted @
2009-03-04 17:17 simplye 阅读(314) |
评论 (0) |
编辑 收藏
/*
悲观锁
*/
Inventory inv = (Inventory)session.load(Inventory.class, 1, LockMode.UPGRADE);
// 在数据库设置为不可重复读下设置,LockMode为枚举类型.
/*
乐观锁
*/
Inventory inv = (Inventory)session.load(Inventory.class, 1);
// 在映射文件中添加<version>字段,在读取时读取version字段进行判断,如果version数值小于等于当前数值则报错.
posted @
2009-03-04 14:39 simplye 阅读(226) |
评论 (0) |
编辑 收藏