- 浏览: 248110 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tanglingshuai:
liulehua 写道根本原因是:没有把该对象对应的主键保存到 ...
关于: org.hibernate.StaleStateException: Batch update -
javeye:
转载了你的文章http://javeye.iteye.com/ ...
关于在tomcat下配置 error-page 500错误不能在IE下转发页面的问题 -
imlsq:
嘿嘿, 使用SEAM 7-8个月时间了还是放弃使用SEAM的想 ...
发现一个Seam做的企业应用,blackberry的在线商店 -
yuanliyin:
我也在用,唯一不爽的就是性能!
发现一个Seam做的企业应用,blackberry的在线商店 -
perfect:
假的 ,大家不要上当 ,根本不能用
HttpWatch 6.1.41 许可文件
Spring in Action 笔记(III)
By: icess blog: http://blog.matrix.org.cn/page/icess
这次来看看使用Spring的Hibernate模板来操作数据, Spring提供了Hibernate的一层包装,使Hibernate使用起来更加方便,尤其是结合Hibernate Annotation时, 配置文件更少,维护更加简单. 下面来看看吧.
下面是一个测试数据实体类TestData.java 和前一篇提到的实体类一样,只不过用了Annotation注释.
package
test.orm.hibernate.model;
import
javax.persistence.Basic;
import
javax.persistence.Entity;
import
javax.persistence.Id;
import
javax.persistence.Table;
@Entity
@Table(name =
"test"
,schema =
"APP"
)
public class
TestData {
private int
id;
private
String name;
public
TestData(
int
id, String name) {
this
.id = id;
this
.name = name;
}
public
TestData() {}
@Id
public int
getId() {
return
id;
}
public void
setId(
int
id) {
this
.id = id;
}
@Basic
public
String getName() {
return
name;
}
public void
setName(String name) {
this
.name = name;
}
}
下面是测试Hibernate模板的类, TestHibernateTemplate.java
package
test.orm.hibernate;
import
java.sql.SQLException;
import
org.hibernate.HibernateException;
import
org.hibernate.Session;
import
org.springframework.orm.hibernate3.HibernateCallback;
import
org.springframework.orm.hibernate3.HibernateTemplate;
import
test.orm.hibernate.model.TestData;
public class
TestHibernateTemplate {
private
HibernateTemplate hibernateTemplate;
public
TestHibernateTemplate() {}
public
HibernateTemplate getHibernateTemplate() {
return
hibernateTemplate;
}
public void
setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this
.hibernateTemplate = hibernateTemplate;
}
//测试使用HibernateTemplate来操作数据
public
TestData getTestData(
final int
id) {
return
(TestData) hibernateTemplate.execute(
new
HibernateCallback() {
public
Object doInHibernate(Session s)
throws
HibernateException, SQLException {
// TODO Auto-generated method stub
return
s.get(TestData.class, id);
}
});
}
// 上面查询数据的方法 使用了HibernateCallBack接口,对于这样简单的查询,可以使用下面由HibernateTemplate 提供的更简单的方法
public
TestData getTestData2(
final int
id) {
return
(TestData) hibernateTemplate.get(TestData.class, id);
}
/* 如果上面的两处方法使用Load 方法的时, 抛出延迟加载属性异常, Spring管理Session的问题, 应该是Spring用完Session 然后就关闭了,
* 所以不可以延迟加载, 也就不可以使用load 方法了,,????? 为什么????*/
// 其他操作数据方法 如: 插入,修改.... 和使用Hibernate session 差不多, HibernateTemplate只是Session的包装
}
可以看到使用Hibernate模板来操作数据,是多么简单,
注意: 上面注释中,提到了在使用Load方法时候,会有问题, Session in view 时候使用load是不会出问题的, 这里Spring提供的方法应该是按照Hibernate的语义写的吧.
下面就是用来测试上面的类是否正常工作的测试类了.TestApp.java
package
test.orm.hibernate;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
test.jdbc.DatabaseUtils;
import
test.orm.hibernate.model.TestData;
public class
TestApp {
/**
*
@param
args
*/
public static void
main(String[] args) {
// TODO Auto-generated method stub
DatabaseUtils dataUtils =
new
DatabaseUtils();
dataUtils.connect();
System.out.println(
"Open database:!"
);
ApplicationContext context =
new
ClassPathXmlApplicationContext(
"test/orm/hibernate/spring-hibernate.xml"
);
TestHibernateTemplate hibernateTemplate = (TestHibernateTemplate) context.getBean(
"testDao"
);
System.out.println(
"name : "
);
TestData data = hibernateTemplate.getTestData(
9
);
System.out.println(
"name : "
+ data.getName());
data = hibernateTemplate.getTestData2(
3
);
System.out.println(
"name 2: "
+ data.getName());
dataUtils.disconnect();
}
}
注意: 本测试中用到了上一篇使用到的DatabaseUtils.java 工具类来操作Derby数据库.
由
以上实例可以看出,在Spring中使用Hibernate,效率更高一些. 你不这样认为吗?
同时
Spring也提供了 JDO等其他一些数据操作框架的包装,使用上基本上 是一样的这里就不在详述了.
下一次我们来看看Spring的I18N处理,和自定义属性编辑器的实现.
发表评论
-
学习使用Java DataBase (Derby) -- 嵌入式数据库
2006-04-13 21:19 1721学习使用Java DataBas ... -
在derby(Java DB) 中操作 clob 和 blob
2006-04-14 15:23 1444在前面一篇文章中, ... -
利用swing开源组件和netbeans快速构建豪华swing界面
2006-04-15 13:41 1386利用swing开源组件和netbeans快速构建豪华s ... -
Java Pet Store 开始全面使用 Web 2.0 技术
2006-05-16 21:58 1012Java Pet Store 开 ... -
Hibernate Validator 简介
2006-05-17 10:35 1224Hibernate Validator 简介 ... -
Google发布AJAX开发工具 Google Web Toolkit
2006-05-17 21:17 847Google Web Toolkit - Build ... -
解析 Hibernate Validator
2006-05-18 15:17 1439任何获得Matrix授权的网站,转载请保留以下作者信 ... -
Spring in Action 笔记(I)
2006-05-22 14:13 839By : icess ,我的部落格 http:// ... -
Spring in Action 笔记(II)
2006-05-25 00:04 1106... -
Spring in Action 笔记 (IV) -- i18n问题和自定义属性编辑器
2006-05-29 11:24 936Spring in Action 笔记 (IV) -- i18 ... -
Breezy简介 -- 快速开发Swing程序!
2006-06-04 22:33 1374Breezy简介 -- 快速开发Swing程序! ... -
最新消息 ,开源嵌入式数据库 Derby(JavaDB) 绑定在JDK 1.6中.
2006-06-18 18:48 1661如下:Source: Fran ... -
callisto(Eclipse 3.2) 迟到了 ?
2006-06-30 23:04 738在今天早些时候访问 callisto 的主页(http://w ... -
Callisto 终于可以下载了.
2006-07-01 04:47 729Callisto 终于可以下载了. Eclipse 3.2 ... -
最近想研究一下DWR 收集一些从入门到精通的系列资料
2006-07-13 15:55 909最近想研究一下DWR 收集一些从入门到精通的系列资料, 以备将 ... -
decode javascript.encode using java
2006-08-01 13:18 1502在前面一篇文章(http://www.hexiao.cn/bl ... -
Wicket 入门示例 :Hello World.
2006-08-05 10:38 1178Wicket http://wicketframework.o ... -
Wicket 教程2: 如何使用Label,MultiLineLabel,Border,BoxBorder
2006-08-07 15:29 1349上次介绍了一个wicket的一个HelloWorld入门示例, ... -
Wicket 教程3:使用 PageView 来调试页面
2006-08-08 09:22 1526使用 PageView 来调试页面.Wicket中提供了一个P ... -
Wicket 教程4:如何使用 Include,Panel,Fragment,Link
2006-08-08 09:25 2028Wicket 教程4:如何使用 ...
相关推荐
MLDN_J2EE框架_笔记--精华---(包括jsp struts hibernate spring).rar
spring-cloud-starter-gateway下的依赖hibernate-validator-5.0.3.Final.jar
spring_in_action-sixth-edition.pdf
spring-in-action-5-samples-master源代码
spring-hibernate.jar
struts-2.5.1-spring-4.2.7-hibernate-5.0.9 整合的项目 可以直接用 . spring 4.3 + hibernate 5.0 测试不可用 冲头
spring-cloud-microservice-in-action,spring cloud学习。
Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出一条数据、输出列表、接收表单,Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出一条数据、输出列表、接收表单
spring.jar spring-aop.jar spring-aop.jar spring-beans.jar spring-hibernate3.jar spring-jdbc.jar spring-struts.jar spring-web.jar
本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...
Spring4 In Action-4.2-@AspectJ-切面,Spring4 In Action-4.2-@AspectJ-切面。Spring4 In Action-4.2-@AspectJ-切面
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
Spring4 In Action-7.1.2-添加其他的Servlet和Filter,Spring4 In Action-7.1.2-添加其他的Servlet和Filter,Spring4 In Action-7.1.2-添加其他的Servlet和Filter
Spring-in-Action Spring-in-Action Spring-in-Action
黑马程序员-SpringCloud-学习笔记01-认识微服务
struts-spring-hibernate-_-integration-2.zip
Spring4 In Action-3.5.1-@PropertySource运行时注入值,Spring4 In Action-3.5.1-@PropertySource运行时注入值,Spring4 In Action-3.5.1-@PropertySource运行时注入值,Spring4 In Action-3.5.1-@PropertySource...
Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate(一步一步的教你敲代码)(博客园,博客名称:Java-Spring+Struts+Hibernate-SSH框架整合01-Spring+Hibernate)
spring.jar 是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类...
spring-in-action-2nd-cn7.rar