- 浏览: 695156 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (260)
- web 开发 (44)
- struts (14)
- java (39)
- 我的感受 (2)
- ajax (2)
- spring (22)
- Hibernate (4)
- struts2 (1)
- java 面试题 (1)
- 英语 学习类 (2)
- jdk1.6特性 (1)
- extjs (13)
- oracle (3)
- JQuery (3)
- ┠ 『Spring 3.0』 ┨ (1)
- 『LOG4J』 (2)
- 『常用数据』 (1)
- JavaMail (0)
- 〓『 EJB3.0 』〓 (0)
- HTML5 (5)
- Canvas (0)
- spring2.5 (0)
- HPH 5 (1)
- C# .net (0)
- UML (1)
- REST (2)
- JS_validate (1)
- 项目管理文章 (1)
- 闲聊闲记 (12)
- SQL-SQL (3)
- javascript (18)
- js (4)
- linux (8)
- 电子政务 (1)
- 项目对象模型 (1)
- 系统集成项目管理 (1)
- shell (2)
- mysql (1)
- solr (5)
- cxf;services (2)
- 11 (0)
- 缓存 (1)
- cached (3)
- 单片机通信 (1)
- cached;oscache (1)
- android (15)
- android;蓝牙 (1)
- Lucene (5)
- TTS (1)
- 网络爬虫 (1)
- HtmlCleaner (1)
- iPhone (2)
- 有感而发 (1)
- Python (0)
- jetty (1)
- Redis (1)
- hadoop (1)
- socket (1)
- 色彩顾问 (1)
- javaapns (1)
- bat (1)
- object-c (4)
- ios (4)
- C-学习 (1)
- 搜索 (1)
- c# (1)
最新评论
-
annie211:
Angularjs构建一个CRUD应用可能用到的全部内容包括:数据绑定、基本模板标识符、表单验证、路由、深度链接、组件重用、依赖注入 -
潇寒听竹:
你好,请问您上传的那个APK为什么每次只能识别一次,不能连续识 ...
pocketsphinxAdroid离线语音识别---入门 -
ichenwenjin:
Angularjs构建一个CRUD应用可能用到的全部内容包括:数据绑定、基本模板标识符、表单验证、路由、深度链接、组件重用、依赖注入 -
NN_iaoiao:
问一下 你的这个People 类 是自定义的还是android ...
android 获取电话本中的联系人列表 -
wangzhe_real:
对于刚接触的我是一个很详细的教程,太感谢了
JAX-RS cxf web服务 rest简单增删改查 集成spring webService
<1>Spring in Hibernate示例
<1 在Spring配置文件
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/test</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" destroy-method="close"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="mappingResources"> <list> <value>com/pojo/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> </bean>
<bean id="userDAO" class="com.dao.UserDAO"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> |
2> Hibernate映射文件
<hibernate-mapping> <class name="com.pojo.User" table="user"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" column="name"/> <property name="age" column="age"/> </class> </hibernate-mapping> |
3> User类
public class User { private Integer id; private String name; private Integer age; //get set method… } |
4> IUserDAO接口
public interface IUserDAO { public void insert(User user); public User find(Integer id); } |
5> UserDAO实现类
public class UserDAO implements IUserDAO {
private SessionFactory sessionFactory;
public UserDAO() {}
public UserDAO(SessionFactory sessionFactory) { this.setSessionFactory(sessionFactory); }
public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; }
public void insert(User user) { Session session = sessionFactory.openSession(); Transaction tx= session.beginTransaction(); session.save(user); tx.commit(); session.close(); }
public User find(Integer id) { Session session = sessionFactory.openSession(); User user = (User) session.get(User.class, id); session.close(); return user; } } |
6> Test测试类
public class Test{ public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml"); IUserDAO userDAO = (IUserDAO) context.getBean("userDAO");
User user = new User(); user.setName("caterpillar"); user.setAge(new Integer(30));
userDAO.insert(user);
user = userDAO.find(new Integer(1));
System.out.println("name: " + user.getName()); } } |
<2>HibernateTemplate类与HibernateDaoSupport类
借助HibernateTemplate我们可以脱离每次数据操作必须首先获得Session实例、启动事务、提交/回滚事务以及烦杂的try/catch/finally的繁琐操作。从而获得以上代码中精干集中的逻辑呈现效果。
HibernateSupport实现了HibernateTemplate和SessionFactory实例的关联。
使用示例部分代码:
public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO { public List getUsers() { return getHibernateTemplate().find("from User"); }
public User getUser(Integer id) { return (User) getHibernateTemplate().get(User.class,id); }
public void saveUser(User user) { getHibernateTemplate().saveOrUpdate(user); }
public void removeUser(Integer id) { Object user=getHibernateTemplate().load(User.class,id); getHibernateTemplate().delete(user); } } |
12.事务管理
对于J2EE 应用程序而言,事务的处理一般有两种模式:
1. 依赖特定事务资源的事务处理
这是应用开发中最常见的模式,即通过特定资源提供的事务机制进行事务管理。如通过JDBC、JTA 的rollback、commit方法;Hibernate Transaction 的rollback、commit方法等。这种方法大家已经相当熟悉。
2. 依赖容器的参数化事务管理
通过容器提供的集约式参数化事务机制,实现事务的外部管理。
Spring提供了一致的事务管理抽象。这个抽象是Spring最重要的抽象之一, 它有如下的优点:
(1)为不同的事务API提供一致的编程模型,如JTA、JDBC、Hibernate、iBATIS数据库层 和JDO
(2)提供比大多数事务API更简单的,易于使用的编程式事务管理API
(3)整合Spring数据访问抽象
(4)支持Spring声明式事务管理
Spring事务管理能给我们带来什么?
对于传统的基于特定事务资源的事务处理而言(如基于JDBC 的数据库访问),Spring并不会对其产生什么影响,我们照样可以成功编写并运行这样的代码。同时,Spring还提供了一些辅助类可供我们选择使用,这些辅助类简化了传统的数据库操作流程,在一定程度上节省了工作量,提高了编码效率。
对于依赖容器的参数化事务管理而言,Spring 则表现出了极大的价值。Spring本身也是一个容器,只是相对EJB容器而言,Spring显得更为轻便小巧。我们无需付出其他方面的代价,即可通过Spring实现基于容器的事务管理(本质上来讲,Spring的事务管理是基于动态AOP)。
(1)编程式事务管理
使用TransactionTemplate
TransactionTemplate采用和其他Spring模板 ,如 HibernateTemplate一样的方法。它使用回调方法,把应用 程序代码从处理取得和释放资源中解脱出来(不再有try/catch/finally)。如同 其他模板,TransactionTemplate是线程安全的。
示例:
UserDAO实现类
public class UserDAO implements IUserDAO { private TransactionTemplate transactionTemplate; private HibernateTemplate hibernateTemplate;
public void setSessionFactory( SessionFactory sessionFactory) { this.transactionTemplate = new TransactionTemplate( new HibernateTransactionManager( sessionFactory)); this.hibernateTemplate = new HibernateTemplate(sessionFactory); }
public void insert(User user) { final User userData = user;
transactionTemplate.setPropagationBehavior( TransactionDefinition.PROPAGATION_REQUIRED);
transactionTemplate.execute( new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult( TransactionStatus status) { try { hibernateTemplate.save(userData); } catch(DataAccessException e) { e.printStackTrace(); status.setRollbackOnly(); } } }); }
public User find(Integer id) { User user = (User) hibernateTemplate.get(User.class, id);
return user; } } |
Test测试类
public class Test{ public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml");
IUserDAO userDAO = (IUserDAO) context.getBean("userDAO");
User user = new User(); user.setName("caterpillar"); user.setAge(new Integer(30));
userDAO.insert(user);
user = userDAO.find(new Integer(1));
System.out.println("name: " + user.getName()); } } |
(2)声明式事务管理
Spring也提供了声明式事务管理。这是通过Spring AOP实现的。
大多数Spring用户选择声明式事务管理。这是最少影响应用代码的选择, 因而这是和非侵入性的轻量级容器的观念是一致的。
示例:
Spring配置文件
相关推荐
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,依次类推。 本光盘根目录下有11个文件夹,其内容和含义说明如下: ...
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,依次类推。 本光盘根目录下有11个文件夹,其内容和含义说明如下: ...
随着struts的安全问题的暴露,原由Struts2+spring+hibernate构成的SSH2已经被越来越多的开发者所弃用,反而,由Spring+SpringMVC+Hibernate构成的SSH框架越来越受欢迎!这里提供了一个案例代码,希望对大家搭建环境...
第二部分详细讲解Struts 2.2、Spring 3.0和Hibernate 3.6三个框架的用法,介绍三个框架时,从Eclipse IDE的使用来上手,一步步带领读者深入三个框架的核心。这部分内容是笔者讲授“疯狂Java实训”的培训讲义,因此是...
在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过这样的整合示例,让读者了解这些框架各自的特点,以便于在自己的项目中,根据实际情况,尽快的过渡到Struts2的时代。本文的内容基于...
新SSH(spring、spring mvc、hibernate)框架结构的java web案例实践
Struts2,Spring与Hibernate整合应用,学生成绩管理系统
[轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发
开发Spring.Struts.Hibernate应用
Struts2、Spring和Hibernate应用实例
轻量级Java_EE企业应用实战_Struts_2+Spring_3+Hibernate整合开发_第3版源码 对应书的源码,自行下载
该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的JavaEE。 操作步骤如下: 1. 下载并解压之后,使用MyEclipse导入工程 2. 找到demo目录中的.sql数据库...
轻量级Java_EE企业应用实战_Struts_2+Spring_3+Hibernate整合开发_第3版
讲述开源技术Struts_Spring_Hibernate在MIS开发中的应用研究.............
整合struts+hibernate+spring应用开发详解 李刚 第二到第四章
轻量级Java_EE企业应用实战_Struts_2+Spring_3+Hibernate整合开发_第3版_mk.part1