- 浏览: 2261974 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字:Spring对Hibernate集JDBC提供的支持。
提供的分页支持:
**
* 使用hql 语句进行操作
* @param hql
* @param offset
* @param length
* @return List
*/
public List getListForPage(final String hql, final int offset,
final int length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}/**
* 使用criterion进行操作
* @param arg
* @param criterions
* @param offset
* @param length
* @return List
*/
protected List getListForPage(final Class arg, final Criterion[] criterions,final int offset, final int length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(arg);
//循环遍历添加约束条件
for (int i = 0; i < criterions.length; i++) {
criteria.add(criterions[i]);
}
criteria.setFirstResult(offset);
criteria.setMaxResults(length);
return criteria.list();
}
});
return list;
}
// 获得集合的总数(聚合查询)
public Integer getSaleChanceListCount() {
final String hql = "select count(*) from SaleChanceInfo si";
Integer result = null;
result = (Integer)getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session arg0)
throws HibernateException, SQLException {
Query query = arg0.createQuery(hql);
return query.uniqueResult();
}
});
return result;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/foart/archive/2009/08/20/4466589.aspx
二、对JBDC提供的便利条件
JDBC - JdbcDaoSupport - JdbcTemplateSpring 2010-08-14 11:17:23 阅读262 评论0 字号:大中小 订阅
JDBC
Connection :
createStatement()
prepareStatement()
prepareCall() 用于执行存储过程
Statement / PreparedStatement / CallableStatement :
executeQuery() 用于执行SQL,返回当前结果集。
executeUpdate() 用于执行DML,返回受影响的记录数目。
execute() 可执行DML与SQL,根据执行的语句类型返回true 或 false。
getResultSet() 用于获取当前结果集。
getMoreResults() 若没有下一个结果集,返回false,若有,返回true,并移动到下一个结果集。
setMaxRows() 设置结果集的最大行数。
CallableStatement.getObject() 获取存储过程指定参数的返回值。
ResultSet:
next() 把游标移动到下一条记录,若返回false,表示已经没有下一条记录,初始时游标在第一条记录之前。
getRow() 获取当前行编号。
absolute() 将光标移动到此 ResultSet 对象的给定行编号。
beforeFirst() 将光标移动到此ResultSet对象的开头,正好位于第一行之前。
afterLast() 将光标移动到此ResultSet对象的末尾,正好位于最后一行之后。
setFetchSize()
setFetchSize最主要是为了减少网络交互次数设计的,访问ResultSet时,如果它每次只从服务器上取一行数据,则会产生大量的开销。setFetchSize的意思是当调用rs.next时,ResultSet会一次性从服务器上取得多少行数据回来,这样在下次rs.next时,它可以直接从内存中获取出数据而不需要网络交互,提高了效率。这个设置可能会被某些JDBC驱动忽略的,而且设置过大也会造成内存的上升。
getInt() / getLong() / getDouble() / getTimestamp() / getDate() / getString() / getObject()……
参数输入指定列的序号或者列名,返回该列的值。
getMetaData() 返回ResultSetMetaData对象。
ResultSetMetaData:
getColumnCount() 返回此 ResultSet 对象中的列数。
getColumnName() 获取指定列的名称。
getColumnType() 获取指定列的 SQL 类型。返回的类型对应java.sql.Types类的静态属性。
JdbcDaoSupport
getConnection() 返回JDBC当前链接对象Connection,若没有则新建一个。这个函数意义上成为了JdbcDaoSupport返回到JDBC的桥梁。
getJdbcTemplate() 获得jdbcTemplate模板。
getDataSource() 返回 JdbcDaoSupport 与 JdbcTemplate的核心:dataSource。
JdbcTemplate
execute() 可执行DDL与DML (CREATE TABLE、INSERT 、UPDATE、 DELETE……)。
update() 可执行DML。
queryForInt() 执行查询返回int类型结果。
int i = this.getJdbcTemplate().queryForInt("SELECT COUNT(*) FROM KING_USER");
queryForObject() 执行查询返回java对象,对象类型可由函数参数指定。
String this.getJdbcTemplate().queryForObject("SELECT name FROM KING_USER where ,String.class) ;
queryForList() 执行查询返回List<Map>类型对象,List里的放的是Map,一个Map包含了一条记录的数据,Map的key是记录的字段名,value是该字段的值。
List<Map> row = this.getJdbcTemplate().queryForList("select * from KING_USER");
System.out.println(row.get(0).get("name"));
query(String sql, RowCallbackHandler rch) 执行查询,每返回一条记录都会调用RowCallbackHandler 的操作。
final KingUser user = new KingUser();
this.getJdbcTemplate().query("SELECT * FROM KING_USER ", new RowCallbackHandler(){
@Override
public void processRow(ResultSet rs) throws SQLException {
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
}
});
System.out.println(user.getName()); //由于每返回一条记录都会调用RowCallbackHandler 的操作,所以user对象的数据是最后一条记录的数据。
query(String sql, RowMapper rowMapper) 执行查询,每条返回的记录都会调用rowMapper的映射规则创建出一个java对象,然后把对象放到一个List里。
Public class UserRowMapper implements RowMapper{
@Override
public Object mapRow(ResultSet rs, int index) throws SQLException {
KingUser user=new KingUser();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
return user;
}
}
List<KingUser> list=this.getJdbcTemplate().query("SELECT * FROM KING_USER", new UserRowMapper());
System.out.println(list.get(0).getName());
execute(ConnectionCallback action) 把JDBC链接对象Connection返回给程序员操作,这个函数意义上成为了JdbcTemplate返回到JDBC的桥梁。
String ConnectionCallback(){
@Override
public Object doInConnection(Connection con) throws SQLException, DataAccessException {
PreparedStatement ps = con.prepareStatement("SELECT * FROM KING_USER ");
ResultSet rs = ps.executeQuery();
rs.next();
String name");
rs.close();
ps.close();
con.close();
return name;
}
});
execute(StatementCallback action) 把JDBC Statement对象返回给程序员操作。
String StatementCallback(){
@Override
public Object doInStatement(Statement st) throws SQLException, DataAccessException {
ResultSet rs = st.executeQuery("SELECT * FROM KING_USER WHERE );
rs.next();
String name");
rs.close();
//不需要显式调用st.close(),函数会自动调用。
return name;
}
});
附件是:JDBC - JdbcDaoSupport - JdbcTemplate三者的关系图。
- Spring_JDBC_JdbcDaoSupport_JdbcTemplate.rar (32.2 KB)
- 下载次数: 11
发表评论
-
Dubbo Main启动方式浅析
2015-05-27 13:54 15455关键字:Dubbo Main启动方式浅析 服务容器是一个s ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1076关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
基于Spring可扩展Schema提供自定义配置支持
2014-07-21 18:38 1009关键字:基于Spring可扩展Schema提供自定义配置支持 ... -
spring 自定义注解实现(MVC层)
2014-07-21 17:32 866关键字:spring 自定义注解实现(MVC层) 前言 在 ... -
Spring MVC 单元测试
2013-12-10 17:56 7977关键字:Spring MVC 单元测试 下面一步一步带领大家 ... -
优化程序之前,可用Jamon来监测你的Spring应用
2013-11-28 23:52 2050关键字:优化程序之前,可用Jamon来监测你的Spring应 ... -
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
2013-11-14 14:01 77275关键字:spring容器加载完毕做一件事情(利用Context ... -
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3
2013-10-30 17:41 2285关键字:Java MVC框架性能比较 jsp、struts1 ... -
spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)
2013-03-26 15:07 9200关键字:spring JTA集成JOTM或Atomikos配置 ... -
mongodb spring支持
2012-12-17 10:11 1027关键字:mongodb spring支持 相关链接: ... -
spring aop实现日志功能
2012-11-22 14:48 3360关键字 :sping aop实现日志功能 附件是spin ... -
Spring + CXF + 注解方式(webService)
2012-11-02 11:34 6775关键字:Spring + CXF + 注解方式(webS ... -
Spring + Xfire + 注解方式
2012-11-01 15:08 1253关键字:Spring 与集成 Xfire 注解方式( Spr ... -
spring rest mvc使用RestTemplate调用
2012-11-01 12:25 70411关键字:RestTemplate使用 可参考博客: ... -
java面向切面编程
2011-09-24 15:37 2361关键字:java面向切面编程 原理简述:java面向切面编 ... -
SpringMVC添加支持Http的delete、put请求
2011-06-02 23:28 3411浏览器form表单只支持GET与POST请求,而DEL ... -
springMVC有关RESTfull
2011-06-02 22:58 5331关键字:springMVC有关RESTfull Sp ... -
spring文件上传(3.0)
2011-06-02 22:44 2960关键字:Spring CommonsMultipartReso ... -
spring3.0多文件上传例子
2011-06-02 22:43 6675关键字:spring3.0多文件 ... -
spring3.0 mvc rest 注解之@
2011-05-16 22:17 3550关键字:spring mvc rest 注解之@ 本文转自h ...
相关推荐
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
Spring框架则是一个全面的企业级应用开发平台,它不仅包含Spring MVC,还提供了依赖注入(DI)、AOP(面向切面编程)、事务管理、JDBC抽象、缓存、任务调度等多个核心功能。在全注解开发中,我们可以使用@Autowired...
通过Spring对Hibernate的管理,我们可以更好地控制事务、实现解耦,同时降低出错的可能性。此外,Spring的AOP支持使得事务管理更加简单,提高了代码的可测试性。在实际项目中,这种集成方式被广泛应用,是Java EE...
本文将深入探讨Spring对JDBC(Java Database Connectivity)的支持,以及如何在实际项目中使用这些功能。 首先,Spring JDBC的核心是`org.springframework.jdbc`包,它提供了一套高级抽象,用于简化数据库操作。在...
Struts2.16、Spring2.5.6、Hibernate3.2以及sqljdbc4是四个在Java开发中广泛使用的开源框架和数据库驱动,它们在构建企业级Web应用程序时起着至关重要的作用。 Struts2.16是MVC(模型-视图-控制器)设计模式的一个...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
你需要在 Spring 配置文件中定义数据源 Bean,如使用 DriverManagerDataSource 或者 DataSourceProxy,提供连接数据库所需的 JDBC 配置信息。 4. **SessionFactory 创建**:使用 Spring 的 LocalSessionFactoryBean...
MyEclipse 提供了对 Spring 和 Hibernate 的良好支持,包括自动配置、代码生成、调试等功能,使得开发者可以快速构建基于这两个框架的应用程序,而无需手动完成所有配置。 在 "lib" 文件夹中,通常会包含项目所需的...
首先,Spring通过其优秀的AOP支持,可以实现对Hibernate的事务管理,使得事务的处理更加透明。其次,Spring的ApplicationContext可以加载Hibernate的相关配置,如SessionFactory,进而创建Session对象,进行数据库...
Spring 和 Hibernate 的整合是企业级 Java 应用开发中的常见实践,它将 Spring 框架的控制反转(IoC)和面向切面编程(AOP)优势与 Hibernate 的持久化能力相结合,提供了更高效、灵活的数据库操作。下面我们将深入...
- Spring JDBC模块:`spring-jdbc.jar`,提供了与JDBC的抽象层,简化数据库操作。 - Spring ORM模块:`spring-orm.jar`,支持各种ORM框架,包括Hibernate,方便在Spring中使用ORM技术。 - Spring AOP模块:`...
8. **单元测试**:Spring Test和Hibernate Test提供测试支持,使得对整合后的应用进行单元测试和集成测试变得简单。 整合Spring3和Hibernate3可以带来很多好处,例如代码的解耦、事务管理的简化以及更好的测试能力...
Spring JDBC 和 Spring ORM 则是数据访问层,其中 Spring ORM 支持包括 Hibernate 在内的多种 ORM 框架。 Hibernate 5.2.12 版本则带来了更高效的数据库交互能力。它支持 JPA(Java Persistence API),并具有自己...
2. **集成Hibernate**:在Spring配置文件中,我们需配置Hibernate的SessionFactory,并利用Spring的JDBC模板或HibernateTemplate进行数据访问。这一步骤包括创建Hibernate的实体类、映射文件以及数据访问接口。 3. ...
`hibernate-core`包含了Hibernate的主要功能,如Session API,而`hibernate-entitymanager`则为JPA(Java Persistence API)提供支持。 3. **JTA (Java Transaction API)**:如`jta`和`jta-api`,因为Spring在管理...
描述中提到有27个jar包,这些可能包括Spring的核心库、AOP库、ORM库,以及Hibernate的主库、JDBC驱动、持久化库等。确保正确导入所有必要的依赖是成功整合的第一步。 2. **配置Spring**:在Spring的配置文件(如`...
Hibernate 是一个对象关系映射(ORM)框架,它将数据库操作转化为对Java对象的操作,消除了低级JDBC代码,提高了开发效率。通过Hibernate,开发者可以使用Java对象直接操作数据库,而无需关心SQL语句的编写。 在...
- hibernate-entitymanager:为JPA提供支持,扩展了hibernate-core的功能。 - hibernate-validator:用于校验对象的属性,遵循JSR-303/JSR-349规范。 3. **其他依赖**: - javax.servlet-api:Servlet API,用于...
以下是对SSH框架整合及其中涉及的85个jar包的详细解释。 1. **Spring框架**:Spring是一个全面的Java应用开发框架,它提供了依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问/集成、远程调用、Web框架等...