为什么用Spring来管理Hibernate?

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

掌握常用框架的基本用法与应用场景

掌握常用框架的基本用法与应用场景

掌握常用框架的基本用法与应用场景常用框架的基本用法和应用场景可以根据具体的框架来进行讨论。

以下是几个常用框架的基本用法和应用场景。

1. Spring框架:Spring是一个轻量级的Java开发框架,提供了一站式的解决方案,包括依赖注入、AOP、事务管理、Web开发等。

在Spring框架中,可以通过注解或XML配置来管理各个组件之间的依赖关系,并利用Spring的IOC容器来管理对象的生命周期。

应用场景包括Web应用开发、企业应用开发、中小型项目开发等。

2. Hibernate框架:Hibernate是一个Java持久化框架,它提供了将Java对象映射到数据库表的解决方案。

通过Hibernate,开发人员可以简化数据库操作,使用面向对象的方式来进行数据库访问,提高开发效率。

应用场景包括ORM映射、事务管理、性能优化等。

3. Django框架:Django是一个基于Python的Web开发框架,致力于提供高效的、安全的Web应用程序开发解决方案。

它采用了MTV (Model-Template-View)的设计模式,通过模型(Model)与数据库交互,通过模板(Template)生成HTML页面,通过视图(View)处理用户请求。

应用场景包括Web应用开发、数据分析平台搭建等。

4. React框架:React是一个用于构建用户界面的JavaScript库,它提供了高效的组件化开发方式,通过虚拟DOM的技术实现了高性能的界面渲染。

React可以与其他框架或库(如Redux、React Router)结合使用,用于构建单页应用、移动应用等。

应用场景包括前端开发、跨平台移动应用开发等。

除了以上几个框架,还有许多其他常用框架,如Angular、Vue.js、Express等,它们都有各自的特点和适用场景。

掌握这些常用框架的基本用法和应用场景,可以帮助开发人员更高效地进行软件开发,提高开发质量和效率。

此外,不仅要掌握框架的基本用法,还要提升自己的拓展能力,如深入学习框架的源码、参与开源社区、阅读相关的技术文章和书籍等,才能更好地应对各种应用场景和解决复杂问题。

Hibernate+Spring多数据库解决方案

Hibernate+Spring多数据库解决方案

Hibernate+Spring多数据库解决方案我以前在项目中的探索和实践,写出来与大家分享。

大家有其他好的方式,也欢迎分享。

环境:JDK 1.4.x , Hibernate 3.1, Spring 2.0.6, JBOSS4.0, 开发模式: Service + DAO我们项目中需要同时使用多个数据库. 但 Hibernate 不能直接支持,为此我们对比了网上网友的方案,自己做了一点探索。

1. Demo需求我们的项目使用一个全省的公共库加十多个地市库的架构。

本文主要说明原理,将需求简化为两库模型。

主库:User管里,主要是系统管理,鉴权等数据;订单库:Order 管理,存放订单等业务性数据。

2. 原理:1) Hibernate 的每个配置文件对应一个数据库,因此多库需要做多个配置文件。

本文以两个为例:主库 hibernate_sys.cfg.xml,订单库 hibernate_order.cfg.xml每个库,Hibernate 对应一个 sessionFactory 实例,因此Hibernate 下的多库处理,就是在多个 sessionFactory 之间做好路由。

2) sessionFactory 有个 sessionFactory.getClassMetadata(voClass) 方法,返回值不为空时,表示该 VO 类在该库中(hbm.xml文件配置在了对应的hibernate.cfg.xml中),该方法是数据路由的核心和关键所在。

因此, User.hbm.xml 配置在 hibernate_sys.cfg.xml ,Order数据位于配置到 hibernate_order.cfg.xml3)多库处理时,需要使用 XA 事务管理。

本例中使用 Jboss4.0 来做JTA事务管理;用JOTM,其他应用服务器原理相同。

3. 实现1)为做多 sessionFactory 实例的管理,设计 SessionFactoryManager 类,功能就是做数据路由,控制路由的核心是 sessionFactoryMap 属性,它按dbFlag=sessionFactory 的方式存储了多个库的引用。

Struts、Spring、Hibernate三大框架的原理和优点

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。

Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。

控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。

ActionServlet是一个通用的控制组件。

这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。

它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。

另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。

动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。

最后动作类把控制权传给后续的JSP 文件,后者生成视图。

所有这些控制逻辑利用Struts-config.xml文件来配置。

模型:模型以一个或多个java bean的形式存在。

这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。

Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。

spring作用

spring作用

spring作用Spring是一个开源的企业级Java应用程序开发框架,它提供了一套全面的基础架构,以帮助开发者更容易地构建可伸缩的Web应用程序。

Spring的主要作用如下:1. IoC(控制反转)容器:Spring的核心是IoC容器,它负责对象的创建、销毁和管理。

传统的开发方式中,对象的创建和销毁都是由开发者手动管理的,而通过使用Spring的IoC容器,对象的声明周期完全交由Spring管理,开发者只需要定义对象的配置信息,Spring会根据配置信息自动创建对象,并在不需要时进行销毁,大大减少了开发工作量。

2. AOP(面向切面编程):Spring通过AOP模块提供了对切面编程的支持,可以将横切关注点(如日志记录、事务管理等)从核心业务逻辑中分离出来,提高代码的可维护性和重用性。

通过使用Spring的AOP功能,开发者可以自定义切点,将横切逻辑织入到核心逻辑中。

3. 数据访问抽象:Spring提供了对各种数据访问技术的抽象,包括JDBC、ORM框架(如Hibernate、MyBatis)和NoSQL数据库。

通过Spring的数据访问抽象,开发者可以通过配置简单地切换不同的数据访问技术,不需要修改业务逻辑代码,提高了代码的灵活性和可扩展性。

4. Web应用开发:Spring提供了一套完整的Web应用开发框架,包括MVC框架、RESTful Web Service支持和Web容器集成。

通过Spring MVC框架,开发者可以快速开发出高性能、易扩展的Web应用程序,通过RESTful Web Service支持,开发者可以基于HTTP协议构建出面向资源的Web服务,并进行跨平台的数据交互。

5. 安全性:Spring提供了一套完善的安全性框架,包括身份验证、授权和数据加密等功能。

开发者可以通过配置简单地集成安全性功能到应用程序中,保护数据的安全性和完整性。

6. 事务管理:Spring提供了对事务管理的支持,可以轻松地管理分布式事务,确保数据的一致性。

Spring的HibernateTemplate

Spring的HibernateTemplate

使用spring的hibernateTemplate的方法分类:Struts+Hibernate+Spring2009-05-22 15:486178人阅读评论(6)收藏举报使用spring的hibernateTemplate的方法- [spring]版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明/logs/24775065.html1.管理SessionFactory使用Spring整合Hibernate时我们不需要hibernate.cfg.xml文件。

首先,在applicationContext.xml中配置数据源(dataSource)bean和session工厂(sessionFactory)bean。

其中,在配置session工厂bean 时,应该注入三个方面的信息:●数据源bean●所有持久化类的配置文件●Hibernate的SessionFactory的属性Hibernate的SessionFactory的属性信息又包括两个内容,一,Hibernate的连接方法;二,不同数据库连接,启动时的选择。

2.为HibernateTemplate注入SessionFactory对象,通过HibernateT emplate来持久化对象Spring提供了HibernateTemplate,用于持久层访问,该模板无需打开Session及关闭Session。

它只要获得SessionFactory的引用,将可以只能地打开Session,并在持久化访问结束后关闭Session,程序开发只需完成持久层逻辑,通用的操作(如对数据库中数据的增,删,改,查)则有HibernateTemplate完成。

HibernateTemplate有三个构造函数,不论是用哪一种构造,要使HibernateTemplate能完成持久化操作,都必须向其传入一个SessionFactory的引用。

HibernateTemplate的用法有两种,一种是常规的用法,另一种是复杂的用。

hibernate框架的工作原理

hibernate框架的工作原理

hibernate框架的工作原理Hibernate框架的工作原理Hibernate是一个开源的ORM(Object-Relational Mapping)框架,它将Java对象映射到关系型数据库中。

它提供了一种简单的方式来处理数据持久化,同时也提供了一些高级特性来优化性能和可维护性。

1. Hibernate框架的基本概念在开始讲解Hibernate框架的工作原理之前,需要先了解一些基本概念:Session:Session是Hibernate与数据库交互的核心接口,它代表了一个会话,可以用来执行各种数据库操作。

SessionFactory:SessionFactory是一个线程安全的对象,它用于创建Session对象。

通常情况下,应用程序只需要创建一个SessionFactory对象。

Transaction:Transaction是对数据库操作进行事务管理的接口。

在Hibernate中,所有对数据库的操作都应该在事务中进行。

Mapping文件:Mapping文件用于描述Java类与数据库表之间的映射关系。

它定义了Java类属性与数据库表字段之间的对应关系。

2. Hibernate框架的工作流程Hibernate框架主要分为两个部分:持久化层和业务逻辑层。

其中,持久化层负责将Java对象映射到数据库中,并提供数据访问接口;业务逻辑层则负责处理业务逻辑,并调用持久化层进行数据访问。

Hibernate框架的工作流程如下:2.1 创建SessionFactory对象在应用程序启动时,需要创建一个SessionFactory对象。

SessionFactory是一个线程安全的对象,通常情况下只需要创建一个即可。

2.2 创建Session对象在业务逻辑层需要进行数据访问时,需要先创建一个Session对象。

Session是Hibernate与数据库交互的核心接口,它代表了一个会话,可以用来执行各种数据库操作。

2.3 执行数据库操作在获取了Session对象之后,就可以执行各种数据库操作了。

如何进行软件开发中的Spring框架的使用和管理

如何进行软件开发中的Spring框架的使用和管理

如何进行软件开发中的Spring框架的使用和管理软件开发中的Spring框架是一个广泛使用的框架,被许多开发者视为最重要的框架之一。

它提供了一种易于使用的方法来构建企业级应用程序,并且在可维护性、可测试性和可扩展性方面都表现出色。

从本文开始,我们将讨论如何在软件开发中使用和管理Spring框架。

一、Spring框架简介Spring框架是一个开源框架,提供了许多Java开发任务中常见的功能。

它可以轻松地实现依赖注入和控制反转,从而使开发者能够轻松地编写更灵活、更可维护的应用程序。

同时,Spring框架还提供了一系列的上下文支持,包括Web上下文支持、JDBC 支持、事务管理支持等。

这些支持使得Spring框架可以轻松地与其他常见技术如Hibernate、MyBatis等框架集成使用。

二、Spring框架的核心组件Spring框架有很多核心组件,其中最常用的是Spring核心容器、AOP(面向切面编程)模块和Spring MVC模块。

Spring核心容器允许开发者创建不同类型的对象并管理这些对象的生命周期。

该容器主要包含了BeanFactory和ApplicationContext两个容器。

其中,BeanFactory容器是Spring框架最基本的容器,主要用于创建和管理对象。

而ApplicationContext容器则是在BeanFactory之上构建而成,它提供了更加方便的实现,并且额外提供了在不同的上下文环境组件的方式。

AOP模块是Spring框架的另一个重要组件,它使得开发者可以通过把特定的代码切分成易于理解的部分(切面),从而更加简单地管理代码。

对于需要在多个应用程序层面上实现一些功能的开发者来说,AOP模块提供了一个妙手的解决方案。

最后,Spring MVC是用于创建Web应用程序的模块。

通过使用Spring MVC,开发者可以快速地创建一个Web应用程序,并且可以很容易地扩展和维护这个应用程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为什么用Spring来管理Hibernate?
分类:SSH 2012-04-06 08:34 2024人阅读评论(27) 收藏举报为什么要用Hibernate框架?这个在《Hibernate介绍》博客中已经提到了。

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?
首先我们来看一下Hibernate进行操作的步骤。

比如添加用户的一个步骤。

在上一篇博客中《八步详解Hibernate的搭建及使用》详细介绍到了Hibernate使用的步骤。

以下的代码来自上篇博客,在此为了解释提出的问题,只做一个截图,若想看完整代码示例,可以参考《八步详解Hibernate的搭建及使用》
看截图,可以看出,Hibernate操作的步骤如下:
1.获得Configuration对象
2.创建SessionFactory
3.创建Session
4.打开事务
5.进行持久化操作。

比如上面的添加用户操作
6.提交事务
7.发生异常,回滚事务
8.关闭事务
使用Hibernate进行访问持久层,每次都要进行这八个步骤。

但是若使用Spring对Hibernate进行管理,又是怎么样的呢?
首先,Spring对Hibernate提供了HibernateTemple类。

这个模版类对session进行封装。

并且Spring会默认为自动提交事务。

所在在dao
层直接写入this.save(Object)即可。

在实践中,遇到了一个问题,无法插入数据库,经过一番折腾,多次实验,验证,总结一下原因,结果如下:
注意:所有的操作都必须在事务中进行。

若单纯的使用Hibernate,则事务需要手动开启提交关闭操作。

当然也可以在Hibernate配置文件中,自动提交。

若使用Spring管理Hibernate,则默认的是自动提交事务。

但是在此,需要注意的是:若使用Spring在配置文件中配置数据源而不使用hibernate.cfg.xml,则可以成功插入数据库,因为HibernateTemple
默认提供自动提交事务。

在Spring的配置文件配置数据源如下:使用此数据源需要的jar如下:
commons-dbcp.jar,commons-pool.jar,msbase.jar,mssqlserver.jar, msutil.jar,sqljdbc4.jar;
[html]view plaincopyprint?
1.<bean id="dataSource"class="mons.dbcp.BasicDataSource">
2.<property name="driverClassName"value="com.microsoft.jdbc.sqlserver.
SQLServerDriver"></property>
3.<property name="url"value="jdbc:sqlserver://192.168.2
4.176:1433;data
base=test"></property>
4.<property name="username"value="sa"></property>
5.<property name="password"value="123"></property>
6.</bean>
7.<bean id="sessionFactory"class="org.springframework.orm.hibernate3.Local
SessionFactoryBean">
8.<property name="dataSource"ref="dataSource"></property>
9. <!-- hibernate属性配置 -->
10.<property name="hibernateProperties">
11.<props>
12.<prop key="hibernate.dialect">org.hibernate.dialect.SQLServer
Dialect</prop>
13.<prop key="hibernate.hbm2ddl.auto">update</prop>
14.</props>
15.</property>
16.lt;!-- 如果采用传统的hbm.xml的方式,可以采用如下方式来简化注册hbm.xml的
步骤,并且class为LocalSessionFactoryBean -->
17.<property name="mappingLocations">
18.<list>
19.<value>classpath:User.hbm.xml</value>
20.</list>
21.</property>
22.</bean>
1.<bean id="sessionFactory"class="org.springframework.orm.hibernate3.Local
SessionFactoryBean">
2.<property name="configLocation">
3.<value>classpath:hibernate.cfg.xml</value>
4.</property>
5.<property name="mappingLocations">
6.<list>
7.<value>classpath:User.hbm.xml</value>
8.</list>
9.</property>
10.</bean>
1.<<span style="font-size:12px;">bean id="userDao"class="erD
aoImpl">
2.<property name="sessionFactory"ref="sessionFactory"></property>
3.</bean></span>
1.package erDao;
2.import org.springframework.orm.hibernate
3.HibernateTemplate;
3.import er;
4.
5.public class UserDaoImpl extends HibernateTemplate implements UserDao {
6.@Override
7. public void insert(User user) {
8. this.save(user);
9. }
10.}。

相关文档
最新文档