- 浏览: 705169 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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配置文件
相关推荐
在本文档中,我们将详细介绍如何将 Spring、SpringMVC 和 Hibernate 框架集成,以便构建一个完整的 Web 应用程序。我们将介绍如何配置 Spring 框架,如何配置 SpringMVC 框架,如何配置 Hibernate 框架,並且如何将...
Spring通过其HibernateTemplate或SessionFactoryBean类提供了对Hibernate的集成支持,使得在Spring应用中使用Hibernate变得更加便捷。 2. **配置文件**:整合过程中,我们需要配置Spring的ApplicationContext.xml...
3. Spring ORM模块:Spring ORM集成了Hibernate,简化了在Spring应用中使用Hibernate的配置。 四、实战应用与最佳实践 1. 数据库设计:理解数据库规范化原理,合理设计实体关系,避免数据冗余和异常。 2. 性能优化...
Spring通过HibernateTemplate或JpaTemplate提供了一套便捷的数据库操作接口,封装了Hibernate的操作,使得在Spring应用中使用Hibernate变得简单。同时,Spring还支持基于注解的事务管理,可以无缝地与Hibernate配合...
在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...
此外,Spring还提供了与Hibernate的集成,使得在Spring应用中使用Hibernate变得更加便捷。 本书将指导读者如何将这三个框架集成在一起,形成一个强大的企业级应用开发平台。通过实际案例,读者将学习到如何配置...
标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...
此外,Spring还提供了与Hibernate的集成,方便在Spring应用中使用Hibernate进行数据操作。 将这三个框架集成,主要目标是构建一个完整的MVC应用,其中Struts2负责控制层,Hibernate负责数据访问层,Spring作为胶水...
在本系统中,Spring作为“胶水”连接各个组件,如控制层的Struts和持久层的Hibernate,使得系统模块化,易于维护和扩展。此外,Spring还提供事务管理,确保数据操作的一致性。 Struts是Java Web应用的一个MVC框架,...
标题中的"Spring,SpringMvc,Hibernate"涉及到的是Java开发中常用的三个开源框架,它们在企业级Web应用开发中起着核心作用。以下是这三个框架的详细解释: **Spring框架**是Java开发中的一个全面的轻量级容器,它...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...
在SSH集成中,Spring主要负责管理整个应用的组件,包括Struts和Hibernate的实例。它通过IoC容器控制对象的生命周期和装配,使得各组件间的依赖关系变得松散,提高了代码的可维护性和可测试性。 Struts是一个MVC...
在Hibernate中,实体类需要继承Serializable接口,并使用@Entity注解标记。属性上应用@Column注解来指定数据库字段,@Id注解标识主键。为了实现CRUD操作,我们通常会创建对应的DAO接口和实现类,利用Session的方法如...
- Spring通过HibernateTemplate或JpaTemplate提供了对Hibernate的封装,使得在Spring应用中使用Hibernate变得更加简单,避免了直接操作SessionFactory和Session。 - Spring事务管理(PlatformTransactionManager)...
此外,4.3版本还加强了与Spring框架的集成,使得在Spring应用中使用Hibernate更加便捷。 **Freemarker模板引擎 2.3.20** Freemarker是一个开源的模板引擎,常用于生成HTML、XML等静态或动态内容。在Java Web应用中...
5. **整合Spring和Hibernate**: 在Spring应用中使用Hibernate,通常会创建一个`SessionFactory`的bean,并使用`LocalSessionFactoryBean`进行配置。然后,通过`PlatformTransactionManager`和`...
通过HibernateTemplate或HibernateDaoSupport,开发者可以方便地在Spring应用中使用Hibernate。 5. **jar文件**:压缩包中的jar文件包含了这些框架的核心库,如struts2-core.jar、spring-context.jar、hibernate-...
开发者可以通过它来配置Hibernate的属性,如数据库连接信息、实体映射文件等,从而在Spring应用中使用Hibernate进行数据操作。 3. **Spring的依赖注入(Dependency Injection, DI)**: Spring的核心特性之一是DI,...
在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全方位的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)以及各种服务管理功能。而Hibernate则是一个优秀的对象关系映射...
Spring、SpringMVC和Hibernate是Java开发中三大核心框架,它们的整合是企业级Web应用的常见架构选择。Spring作为基础框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;SpringMVC则负责处理HTTP请求,实现...