S详细讲解SH中Spring事务流程

S详细讲解SH中Spring事务流程
S详细讲解SH中Spring事务流程

给你详细讲一下SSH框架的事物管理,希望对你有帮助。

Struts+hibernate+spring整合开发web应用是相当流行的,只需要简单的配置就能轻松的对数据库进行crud操作,下面就hibernate+spring 的配置做一下剖析,一边与大家一起分享经验:

1、准备工作:

可以利用hibernate tools生成相关映射文件已经po对象、dao对象,dao 也可以自己手动编写,无非就是实现crud,如果通过继承hibernate提供的HibernateDaoSupport,则可以更轻松的实现

关键就在于配置文件,下面看一个样例:

xmlns:xsi=" "

xsi:schemaLocation=" ">

com/ouya/

true

true

local="sessionFactory"/>

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

key="find*">PROPAGATION_REQUIRED,readOnly

key="search*">PROPAGATION_REQUIRED,readOnly

key="remove*">PROPAGATION_REQUIRED,readOnly

key="query*">PROPAGATION_REQUIRED,readOnly

key="list*">PROPAGATION_REQUIRED,readOnly

key="count*">PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

可以看到配置文件的步骤:

1、配置数据源

2、配置会话工厂(依赖注入上面的数据源,还要注入hbm映射文件[注意正确的位置]、hibernate属性文件)

3、配置事务管理器(依赖注入上面的会话工厂)

4、 Spring中声明事务管理器(根据需要又可分为几种,但都要依赖注入上面的事务管理器,此外还需要配置transationAttributes)

后面的一些普通的bean配置就不用说了

上面的例子中使用的声明事务管理器是:TransactionProxyFactoryBean,这样的话我们就需要在后面配置目标bean,比如上面的例子中我们的原服务对象是id为us的UserService(没有实现接口),所以我们为他配置了id为userService的代理对象(目标bean),程序中使用时只能通过使用代理对象才能实现数据库操作功能(代理对象的父类是上面声明的事务管理器,一边我们使用的时候开启事务),如果直接使用服务对象就无法开启事务

程序中调用:UserService us = (UserService) ("userService");

注:userService就是上面配置的代理对象的id,而不是原服务对象的id

但是如果我们想通过原服务对象的id来使用对象,则我们需要使用代理事务管理器BeanNameAutoProxyCreator(根据beanname自动代理),上面的配置文件需要做改动,做两件事(当然先要删除原来配置的TransactionProxyFactoryBean,不然就混乱了,可能会报错的):

1、增加一个事务拦截器

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

key="find*">PROPAGATION_REQUIRED,readOnly

key="search*">PROPAGATION_REQUIRED,readOnly

key="remove*">PROPAGATION_REQUIRED,readOnly

key="query*">PROPAGATION_REQUIRED,readOnly

key="list*">PROPAGATION_REQUIRED,readOnly

key="count*">PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

2、定义自动代理事务管理器

us

transactionInterceptor

然后我们在程序中调用时应如下:

UserService us = (UserService) ("us");

注:注意与上面使用TransactionProxyFactoryBean时的调用区别,此处我们用getbean时直接取原服务层对象的id,不需要去配置目标bea,这也正是

BeanNameAutoProxyCreator(根据bean名称自动代理)的含义所在

附录:

1、关于hibernate的属性详解:

Hibernate 会话厂 SessionFactory

Session 就是用于每次与数据库会话的,因此需要:

数据库的配置参数,这些参数就是上面的数据源指定的! 因此我们只需引用即可: ref="dataSource";

实体映射配置配置

结果缓存配置(这里使用的是开源的 ehcache)

org/springframework/samples/jpetstore/domain/ 传统上的文件的参数放在这里 -->

${}

true

true

true

2

100

不必等到累计到50个SQL之后才执行.只要事务commit后,不管缓存中有多少条sql语句都要执行.

参数只是设定一次最多可以提交多少sql语句的上限,提高sql语句的执行效率

-->

50

如果在开发阶段理发了实体对象的映射文件的定义后,此配置将后台的数据库表进行更新(如增加表的列)

(4)validate

用于校验现有的表与现有的配置是否一致。

-->

update

update

如果需要“查询缓存”,还需要在使用Query或Criteria()时设置其setCacheable(true);属性-->

true

为解决 merge()方法语义的歧义 @todo 以后进一步解析或者你可以看一下相应的文档 -->

2、Spring的transactionAttributes

PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。PROPAGATION_REQUIRED意思是支持当前事务,如果当前没有事务,就新建一个事务。

insert*意思是对所有以insert开头的方法应用事务控制。

list, set, map和props元素分别用来设置类型为List,Set,Map和Propertis的属性值,分别用来为bean传入集合值

spring配置文件各个属性详解

spring配置文件各个属性详解 分类:spring 2012-08-09 11:25 9316人阅读评论(2) 收藏举报springaophibernateattributesxhtmlwebsphere 目录(?)[+]一、引用外部属性文件 classpath:mail.properties classpath:jdbc.properties 我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。 注意: 而在spring2.5的版本中提供了一种更简便的方式,如: 1. 这样以后要使用属性文件中的资源时,可以使用${属性名}来获得。 二、常用数据源的配置 第一种是:DBCP数据源,(需要加入2个jar文件,在spring中的lib下 jakarta-commons/commons-dbcp.jar和commons-pools.jar)主要配置如下:

人事部工作流程

人事部工作流程

人事工作流程1 招聘录用 部门因工作需要必须增加人员时,需由部门经理提出计划,报总经理批准后,由行政人事部纳入招聘计划并办理招聘的相关事宜。 招聘途径:以网络为主。 面试方式:面谈和实际操作。 应聘人员需提交的资料:个人简历、学历证书原件及复印件、技术资格证明或岗位资格证明、身份证原件及复印件、近期小一寸免冠照片(红底)。 各级人员的聘任审批权限: 部门经理聘任各自部门所需员工。 注: 1、面试官需在应聘者简历处填写面试评价,以便人事资料有备可查。 2、如用人部门经理认为该面试者能力达到部门要求,并希望为其办理入职手续时,人事专员须对其进行背景调查,确保公司新进人员的可靠性。 入职办理 将新员工顺利导入现有的组织结构和公司文化氛围之中。员工被录用初期通常是最重要的时期,正是在这个时期员工形成了工作态度、工作习惯,并为将来的工作效率打下基础; 新员工凭《入职通知书》到新单位报到。为完善相关人员资料,新进员工需填写《员工入职表》。除了面试所需带的资料,离职证明及身份证复印件在试用期满内还需交齐办理社保所需资料。 带领新员工领用办公用品,于一周内发放和配置相关的办公设备(记事本、中性笔、电脑、手机卡号<销售人员>)。 新员工入职培训 1、发放《新员工入职指引》,向新员工介绍工作环境及相关同事,使其消除对新环境的陌生感,尽快进入工作角色; 2、进行新员工入职培训,首先介绍公司简介,进行企业文化宣导,并介绍公司相关制度;接着进行岗位的业务特性及工作内容说明,;然后将新员工带到岗位上进行实操培训。 3、于新人培训完成一周内进行上岗考核,考核分书面考核和实操考核,书面考核由行政人事部组织其统一考试,实操考核由用人部门主管安排,并对其进行评分。书面与实操通过后即可正式上岗。 员工转正考核 1、在试用期内定期对新员工工作进行跟进与评估,为转正提供依据。形式:面谈。内容:主要了解其直接经理对其工作的评价;新员工对工作、直接经理、公司等各方面的看法。

S详细讲解SH中Spring事务流程

给你详细讲一下SSH框架的事物管理,希望对你有帮助。 Struts+hibernate+spring整合开发web应用是相当流行的,只需要简单的配置就能轻松的对数据库进行crud操作,下面就hibernate+spring 的配置做一下剖析,一边与大家一起分享经验: 1、准备工作: 可以利用hibernate tools生成相关映射文件已经po对象、dao对象,dao 也可以自己手动编写,无非就是实现crud,如果通过继承hibernate提供的HibernateDaoSupport,则可以更轻松的实现 关键就在于配置文件,下面看一个样例:

Spring分布式事务实现

Spring分布式事务实现 分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持。如果使用WAS的JTA支持,把它的属性改为WebSphere对应的TransactionManager。 在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open Transaction Manager )和AtomikosTransactionsEssentials实现,在spring中分布式事务是通过jta(jotm,atomikos)来进行实现。 1、https://www.360docs.net/doc/045445346.html,/ 2、https://www.360docs.net/doc/045445346.html,/Main/TransactionsEssentials 一、使用JOTM例子 (1) Dao及实现 GenericDao接口: ? 1 2 3 4 public interface GenericDao { public int save(String ds, String sql, Object[] obj) throws Exception; public intfindRowCount(String ds, String sql); } GenericDaoImpl实现:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class GenericDaoImpl implements GenericDao{ private JdbcTemplatejdbcTemplateA; private JdbcTemplatejdbcTemplateB; public void setJdbcTemplateA(JdbcTemplatejdbcTemplate) { this.jdbcTemplateA = jdbcTemplate; } public void setJdbcTemplateB(JdbcTemplatejdbcTemplate) { this.jdbcTemplateB = jdbcTemplate; } public int save(String ds, String sql, Object[] obj) throws Exception{ if(null == ds || "".equals(ds)) return -1; try{ if(ds.equals("A")){ return this.jdbcTemplateA.update(sql, obj); }else{ return this.jdbcTemplateB.update(sql, obj); } }catch(Exception e){ e.printStackTrace(); throw new Exception("执行" + ds + "数据库时失败!"); } } public intfindRowCount(String ds, String sql) {

全面分析 Spring 的编程式事务管理及声明式事务管理

开始之前 关于本教程 本教程将深入讲解Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解Spring 事务管理的本质,并灵活运用之。 先决条件 本教程假定您已经掌握了Java 基础知识,并对Spring 有一定了解。您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。 本文将直接使用这些概念而不做详细解释。另外,您最好掌握数据库的基础知识,虽然这不是必须。 系统需求 要试验这份教程中的工具和示例,硬件配置需求为:至少带有512MB 内存(推荐1GB)的系统。需要安装以下软件: ?Sun JDK 或更新版本或IBM Developer Kit for the Java 5 platform 版本。?Spring framework 。本教程附带的示例代码已经在Spring 上测试过。?MySQL 或更新版本。 ? Spring 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失。 在Spring 中,事务是通过TransactionDefinition 接口来定义的。该接口包含与事务属性有关的方法。具体如清单1所示: 清单1. TransactionDefinition 接口中定义的主要方法 public interface TransactionDefinition{ int getIsolationLevel(); int getPropagationBehavior(); int getTimeout(); boolean isReadOnly();

人事专员主要工作流程及注意事项

人事专员主要工作流程及注意事项

人事专员主要工作流程及注意事项 人事专员工作流程 执行并完善公司的人事制度与计划,培训与发展,绩效评估,员工社会保障福利等方面的管理工作;组织并协助各部门进行招聘、培训和绩效考核等工作;执行并完善员工入职、转正、异动、离职等相关政策及流程;员工人事信息管理与员工档案的维护,核算员工的薪酬福利等事宜;其它人事日常工作; 1、执行并完善公司的人事制度与计划,培训与发展,绩效评估,员工社会保障福利等方面的管理工作; 2、组织并协助各部门进行招聘、培训和绩效考核等工作; 3、执行并完善员工入职、转正、异动、离职等相关政策及流程; 4、员工人事信息管理与员工档案的维护,核算员工的薪酬福利等事宜; 5、其它人事日常工作; 技能及经验要求 1、大专以上学历,年龄在24-28岁,人力资源或企业管理类相关专业毕业优先; 2、二年以上相关工作经验,有通讯行业相关工作背景者优先; 3、在人员招募、引进、培训开发及员工考核、激励等方面有实际操作能力; 4、具有优秀的书面、口头表示能力、极强的亲和力与服务意

识,沟通领悟能力强; 5、工作细致认真,原则性强,有良好的执行力及职业素养; 6、熟悉国家相关劳动法律、法规,熟悉人力资源管理工作流程和运作方式; 7、具有较强的应变能力和内外沟通能力; 8、有强烈的责任感及敬业精神,能承受较大的工作压力; 9、良好的计算机水平,熟练操作office办公软件; 人事工作流程我能够发给你,需要你的邮件。 【扩展阅读篇】 工作总结格式一般分为:标题、主送机关、正文、署名四部分。 (1)标题。一般是根据工作总结的中心内容、目的要求、总结方向来定。同一事物因工作总结的方向——侧重点不同其标题也就不同。工作总结标题有单标题,也有双标题。字迹要醒目。单标题就是只有一个题目,如《我省干部选任制度改革的一次成功尝试》。一般说,工作总结的标题由工作总结的单位名称、工作总结的时间、工作总结的内容或种类三部分组成。如“××市化工厂1995年度生产工作总结”“××市××研究所1995年度工作总结”也能够省略其中一部分,如:“三季度工作总结”,省略了单位名称。毛泽东的《关于打退第二次反共高潮的总结》,其标题不但省略了总结的单位名称,也省略了时限。双标题就是分正副标题。正标题往往是揭示主题——即所需工作总结提炼的

spring事务传播机制实例讲解

spring事务传播机制实例讲解 Java代码1、 [DEBUG,DataSourceTransactionManager,main] Creating new transaction with name [https://www.360docs.net/doc/045445346.html,erService.addUser]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT 2、[DEBUG,JdbcTemplate,main] Executing SQL statement [insert into t_user(id,name) values(1,'duck')] 3、 [DEBUG,DataSourceTransactionManager,main] Suspending current transaction, creating new transaction with name [com.zx.spring.BookService.addBook] 4、 [DEBUG,JdbcTemplate,main] Executing SQL statement [insert into t_book(id,name) values(1,'duck-j2ee')] 5、[DEBUG,DataSourceTransactionManager,main] Initiating transaction commit 6、 [DEBUG,DataSourceTransactionManager,main] Committing JDBC transaction on Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@1b7ae22] 7、[DEBUG,DataSourceTransactionManager,main] Resuming suspended transaction after completion of inner transaction 8、[DEBUG,DataSourceTransactionManager,main] Initiating transaction commit 9、

spring的@Transactional注解详细用法

spring的@Transactional注解详细用法 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! spring的@Transactional注解详细用法Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API 提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用提供比其他事务API如JTA更简单的编程式事务管理API与spring数据访问抽象的完美集成事务管理方式spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。显然声明式事务管理要优于编程式事务管理,这正是spring

人事工作流程详细

人事工作流程 一、新员工入职工作流程 新员工入职通知T入职体检T入职报到T入职培训T调入工作岗位。 1、对公司拟录用人员,在确定录用意向后一个工作日内,由人事专员电话通知拟录用人员,并告知入职体检、入职报到材料、报到时间等相关事宜。 2、拟录用人员需到正规医院进行入职健康检查,拟录用人员身体健康方可入职报到,否则不予录用,以正规医院出具的体检报告为判断标准。 3、员工入职报到所需材料: ①体检报告; ②身份证复印件 2 份(正反两面); ③毕业证、职称(含职业资格证书)复印件1份; ④本人建行卡帐号; ⑤一寸照片 2 张(需办社保卡的必须提供白底照片);⑥有其他企业工作经验者需提供前一单位解除劳动合同证明书。 4、入职培训要求: ①所有新进员工必须经入厂培训考试合格后方可上岗,具体按照《员工培训管理规定》中“新员工上岗培训”要求执行; ②入厂培训内容:公司概况、发展规划、企业文化、安全知识、管理制度、图纸识别知识、变压器基础知识、工艺规程、操作规程等。 5、新员工上岗工作程序: ①入职培训合格后,将培训试卷交人事专员处存档,人事专员凭试卷为其建立个人档案; ②开具调令一式五份,公司存档一份,个人档案一份,薪资核算员一份,领取饭票处一份,入职部门一份。 ③人事专员处开具收据,领取个人劳保用品(工作服、劳动防护用具等); ④新员工入职一个月内与其签订劳动合同(关键岗位人员同时签订《竞业限制协议》),合同期限按《劳动合同管理规定》的要求执行; ⑤试用期考核转正后为其办理各项社会保险,特殊情况经双方协商确定;根据岗位情况报公 司请示是否为其购买意外伤害保险; ⑥人事专员将新员工个人信息加入《员工花名册》、《岗位人员名单》。 二、员工离职管理工作流程 1 、员工离职包括员工本人书面申请与公司解除劳动合同、公司与员工解除劳动合同和劳动合同到期终止三种情形。 2、员工辞职流程:

Spring事务配置的五种方式

Spring事务原理 统观spring事务,围绕着两个核心PlatformTransactionManager和TransactionStatus spring提供了几个关于事务处理的类: TransactionDefinition //事务属性定义 TranscationStatus //代表了当前的事务,可以提交,回滚。 PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。 一般事务定义步骤: TransactionDefinition td = new TransactionDefinition(); TransactionStatus ts = transactionManager.getTransaction(td); try { //do sth https://www.360docs.net/doc/045445346.html,mit(ts); } catch(Exception e){transactionManager.rollback(ts);} spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。 编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象. void add() { transactionTemplate.execute( new TransactionCallback(){ pulic Object doInTransaction(TransactionStatus ts) { //do sth} } } 声明式: 使用TransactionProxyFactoryBean: PROPAGATION_REQUIRED PROPAGATION_REQUIRED

计算机软件,spring中事务管理器的配置

浅析Spring提供的事务管理方法

浅析Spring提供的事务管理方法 Spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;而声明式的比编程式的更灵活方便。本文将讨论这两种事务管理的区别。 传统的JDBC事务管理 以往使用JDBC进行数据操作时,一般采用DataSource,从数据源中得到Connection,我们知道数据源是线程安全的,而连接不是线程安全的,所以对每个请求都是从数据源中重新取出一个连接。一般的数据源由容器进行管理,包括连接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等这些J2EE商业容器都提供了这个功能。 以往的我们使用JDBC在写代码时,事务管理可能会是这样: Connection conn = null; try { conn = DBConnectionFactory.getConnection; conn.setAutoCommit(false); //do something https://www.360docs.net/doc/045445346.html,mit(); //commit transcation } catch(Exception e) { conn.rollback(); //do sth } finally { try { conn.close();

catch(SQLException se){ //do sth.} //close ResultSet,PreparedStatement,Connection //notice:Maybe ocurr Exception when u close rs,pstmt,conn } 按照以往的思路来写代码,代码量比较长,而且容易疏忽,忘掉一些try/catch,引发一些异常无法catch,虽然有时候我们会写DBTool类,来关闭这些资源,并且保证在关闭这些资源时,不向外抛异常。 Spring提供的编程式的事务处理 Spring提供了几个关于事务处理的类: ?TransactionDefinition //事务属性定义 ?TranscationStatus //代表了当前的事务,可以提交,回滚。 ?PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。 我们使用编程式的事务管理流程可能如下: 1 声明数据源 2 声明一个事务管理类,例如DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等 3 在我们的代码中加入事务处理代码: TransactionDefinition td = new TransactionDefinition(); TransactionStatus ts = transactionManager.getTransaction(td); try { //do sth https://www.360docs.net/doc/045445346.html,mit(ts); } catch(Exception e){transactionManager.rollback(ts);} 使用spring提供的事务模板TransactionTemplate void add()

在spring中如何配代码的事务管理

在spring中如何配代码的事务管理 在J2EE的web应用里面配置spring非常简单,最简单的只需要把spring得ContextLoaderListener添加到你的web.xml文件里面就可以了,示例如下:org.springframework.web.context.ContextLoaderListener ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下,它会在WEB-INF/applicationContext.xml文件找Spring的配置。你可以通过定义一个元素名字为”contextConfigLocation”来改变Spring 配置文件的位置。示例 使用”org.springframework.jdbc.datasource.DriverManagerDataSou rce”数据源来配置数据库驱动。示例如下:org.hsqldb.jdbcDriver jdbc:hsqldb:db/appfuse sa spring提供了几个关于事务处理的类:TransactionDefinition //事务属性定义TranscationStatus //代表了当前的事务,可以提交,回滚。PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransac 在context中定义DataSource,创建SessionFactoy,设置参

数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter 或OpenSessionInViewIntercepto 一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C 的实例,但这种方法显然两者的依赖(Dependency)太大了。而IoC 的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的

人事部工作流程及详细规章

大纲 一.人事部工作流程(附) 1>公司发展战略 2>组织结构图及机构职责 3>职位说明书 4>人事部工作总流程 二.员工进入—退出公司轨迹(附) 1>正常进入—退出轨迹 2>非正常退出轨迹 三.招聘 1>招聘方式 1.外部招聘 2.内部招聘 2>初试/复试 3>录用、通知 四.绩效管理—考核 1>考核申请(附申请表)

2>考核评审(附考核表)五.绩效管理—评估 1>评估流程 2>评估结果 3>评估申诉 六.薪酬 1>薪酬调查 2>年度薪金调整方案 3>考核考勤表 七.福利—社保 1>统一缴纳社保 2>个人缴费 3>集体户参保/停缴/申请 八.奖惩 1>奖惩依据 2>奖惩制度 1.奖励项目 2.惩罚项目

九.岗位调整 1>固定时间的岗位调整 2>非固定时间的岗位调整十.人才储备 1>提名 2>人才培养 十一.培训 1>制定培训计划 2>培训测试 十二.劳动合同 十三.入职 1>总部员工入职 2>外埠员工入职 十四.试用转正 十五.考勤

十六.休假 十七.档案管理 1>档案的转入/转出 2>建立公司内部员工档案十八.离职 1>辞退依据及流程 2>离职流程 3>工作交接

序:中国企业产品销售平台——飞龙网是由中国飞龙信息科技有限公司耗资数千万自主研发并运营的以B2B为主、B2C为辅的全球性大型综合性商务平台。 飞龙网有效的整合社会各方面资源,通过龙信宝、龙信贷、龙投标及龙展示等四大支柱业务,以线上展示交易为基础、线下物流仓储为纽带,为企业在产品展示、产品交易、物流仓储、企业信贷等方面提供强有力的支持。 现为了更好的整合公司内部资源,提高员工工作效率,团结一致,特出示人力资源相关流程及详细规章。请各位员工以及领导共同遵守,互相勉励.

spring,mybatis事务管理配置与@Transactional注解使用[转]

spring,mybatis事务管理配置与@Transactional注解使用 [转] spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。 Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用提供比其他事务API如JTA更简单的编程式事务管理API与spring数据访问抽象的完美集成 事务管理方式 spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在AOP之上的。其本质是对方法前后

进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于 @Transactional注解的方式),便可以将事务规则应用到业 务逻辑中。 显然声明式事务管理要优于编程式事务管理,这正是spring 倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。 声明式事务管理也有两种常用的方式,一种是基于tx和aop 名字空间的xml配置文件,另一种就是基于@Transactional 注解。显然基于注解的方式更简单易用,更清爽。 自动提交(AutoCommit)与连接关闭时的是否自动提交 自动提交 默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则

人事部工作流程

人事部工作流程 一、招聘录用流程 部门提出招聘需求, 人事部根据需求审核编制及工作需要,如通过审核并有工作需要则进行招聘;若无编制数,则看有无工作需要,无工作需要则部门内部消化人员,有工作需要则部门申请增加编制,经总经理批准后进行招聘。 招聘新员工的途径有现场招聘、网络招聘、来电、来访、员工介绍及其他等途径,下面以应聘人员前来酒店应聘为例: (一)酒店所需准备资料:工作申请表 (二)办理流程 1、外部人员来酒店应聘时,先询问其学习、工作情况,符合要求的带其到会议室填写工作申请表; 2、部门负责人查看工作申请表,审核应聘人员情况,对应聘人员初步筛选,并确定参加面试人员的名单; 3、所属部门负责人确定面试时间并告知人事部; 4、人事部通知应聘人员面试时间; 5、安排面试场地,部门负责人对应聘人员进行面试; 6、面试后征询部门意见,公布面试结果; 7、未通过部门面试, 应聘简历存入酒店人才库;通过面试人员准备入职所需资料(详细情况见入职手续中员工需提供的资料列表)。 二、新进人员入职流程 (一)所需资料

1、员工需要提供的资料: (1)身份证原件及复印件 (2)毕业证书或实习推荐表原件及复印件 (3)健康证 (4)背景调查 (5)一寸照片三张 (6)就业登记证(南通城市户口的人员提供)或身份证原件(无就业登记证人员提供) (7)养老保险手册(参加过养老保险的人员提供) (8)原单位劳动关系解除证明(与原单位签订合同者提供) (9)服装费300元、住宿费100元(住员工宿舍人员提供) (10)暂住证原件及复印件(非南通市区户口人员提供) 2、酒店需准备的资料 (1)新进人员登记表 (2)新进员工报到手续表 (3)新进员工告知书 (4)新进员工行为规范告知书 (5)新进员工薪资告知书 (6)员工薪资清单告知书 (7)岗位职责与规章制度员工确认书 (8)关于考勤规定员工知晓事宜(备忘录1) (9)关于发放资料保管事宜(备忘录2)

spring事务配置详解

Spring事务配置的五种方法 2009-04-24 10:20 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。 具体如下图: 根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下: 第一种方式:每个Bean都有一个代理

spring事务

1.6 Spring事务: 1. 编程式事务管理——编程式的事务管理可以清楚滴控制事务的边界,也就是让您自行实现事务开始时间、撤消操作的时机、结束时间等,可以实现细粒度的事务控制。 2. 声明式事务管理——然而多数的情况下,事务并不需要细粒度的控制,而是采用声明式的事务管理,好处是Spring事务管理的相关API可以不用介入程序之中,从对象的角度来看,它并不知道自己正被纳入事务管理之中,在不需要事务管理的时候,只要在设置文件上修改一下设置,即可移去事务管理服务。 Spring声明式的事务管理依赖它的AOP框架来完成。使用声明式事务管理的好处是,事务管理不能侵入您所开发的组件,具体来说,DAO对象不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策略的话,也只需要在定义文件中重新配置。 事务的属性介绍: Spring使用AOP来完成声明式的事务管理,因而声明式事务是以方法为边界的,Spring的事务属性自然就在于描述事务应用至方法上的策略,在Spring 中事务属性分作以下的几个参数:传播行为(Propagation behavior)、隔离层级(Isolation Level)、只读提示(Read-only hints)、事务超时期间(The transaction timeout period) 传播行为(Propagation behavior):传播行为定义了事务应用于方法的边界(Boundaries),它告知何时该开始一个新的事务,或何时事务被暂停,或方法是否要在事务中进行。如,若传播行为设置为PROPAGATION_REQUIRED,则事务的边界在开始第一个事务的方法呼叫及结束时,如果先前没有事务被开始,则事务边界即为目前方法的执行前后。又如果传播行为被声明为PROPAGATION_REQUIRES_NEW,则事务的边界即为该方法执行的前后。 隔离层级(Isolation Level):在一个应用程序中,可能有多个事务同时在进行,这些事务应当彼此之间另一个事务的存在,好比现在整个应用程序就只有一个事务存在,由于事务彼此之间独立,若读取的是同一个数据的话,就容易发生问题。如: 脏读:(Dirty Read)脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另一个事务也访问了这个数据,然后使用了这个数据,由于这个数据是还没有提交的数据,(有可能回滚)那么另外这个事务读到的数据就是脏数据,依据脏数据所做的操作可能是不正确的。 不可重复读:(Non-repeatable read)指在一个事物中,多次读取同一个数据。当这个事务还没结束时,另外一个事务也访问该同一数据。那么,在第一个事务中

Spring 自动事务代理

spring 同时支持编程事务策略和声明式事务策略,大部分时候,都推荐使用声明式事务策略,使用声明式事务策略的优势十分明显。 对于使用声明式事务策略,可以使用TransactionProxyFactoryBean来配置事务代理Bean。正如它的类名所暗示的,它是一个工厂Bean,工厂Bean用于生成一系列的Bean实例,这一系列的Bean实例都是Proxy.这种事务代理正是基于Spring AOP组件。配置TransactionProxyFactoryBean时,一样需要指定目标Bean. 每个TransactionProxyFactoryBean为一个目标Bean生成事务代理,事务代理的方法改写了目标Bean的方法,就是在目标Bean的方法执行之前加入了事务,在目标Bean的方法正常结束之前提交事务,如查遇到了异常则回滚事务。 TransactionProxyFactoryBean创建事务代理时,需要了解当前事务所处的环境,该环境属性通过PlatformTransactionManager实例传入,而相关事务传入规则在TransactionProxyFactoryBean的定义中给出. PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED *0*IF

相关文档
最新文档