|
Page
1, Page
2, Page
3
|
|
What are the types of the transaction
management Spring supports ?
|
Spring Framework
supports:
Programmatic transaction management.
Declarative transaction management.
|
What
are the benefits of the Spring Framework transaction management ?
|
The Spring Framework provides a
consistent abstraction for transaction management that delivers the
following benefits:
Provides a consistent programming model across
different transaction APIs such as JTA, JDBC, Hibernate, JPA, and JDO.
Supports declarative transaction management.
Provides a simpler API for programmatic
transaction management than a number of complex transaction APIs such
as JTA.
Integrates very well with Spring's various
data access abstractions.
|
Why
most users of the Spring Framework choose declarative transaction
management ?
|
Most users of the Spring
Framework choose declarative transaction management because it is the
option with the least impact on application code, and hence is most
consistent with the ideals of a non-invasive lightweight container.
|
Explain
the similarities and differences between EJB CMT and the Spring
Framework's declarative transaction management ?
|
The basic approach is similar:
it is possible to specify transaction behavior (or lack of it) down to
individual method level. It is
possible to make a setRollbackOnly() call within a transaction context
if necessary.
The differences are:
- Unlike EJB CMT, which is tied to JTA, the Spring
Framework's declarative transaction management works in any
environment. It can work with JDBC, JDO, Hibernate or other
transactions under the covers, with configuration changes only.
- The Spring Framework enables declarative transaction
management to be applied to any class, not merely special classes such
as EJBs.
- The Spring Framework offers declarative rollback rules:
this is a feature with no EJB equivalent. Both programmatic and
declarative support for rollback rules is provided.
- The Spring Framework gives you an opportunity to customize
transactional behavior, using AOP. With EJB CMT, you have no way to
influence the container's transaction management other than
setRollbackOnly().
- The Spring Framework does not support propagation of
transaction contexts across remote calls, as do high-end application
servers.
|
When
to use programmatic and declarative transaction management ?
|
Programmatic transaction
management is usually a good idea only if you have a small number of
transactional operations.
On the other hand, if your application has numerous transactional
operations, declarative transaction management is usually worthwhile.
It keeps transaction management out of business logic, and is not
difficult to configure.
|
Explain
about the Spring DAO support ?
|
The Data Access Object (DAO)
support in Spring is aimed at making it easy to work with data access
technologies like JDBC, Hibernate or JDO in a consistent way. This
allows one to switch between the persistence technologies fairly easily
and it also allows one to code without worrying about catching
exceptions that are specific to each technology.
|
What
are the exceptions thrown by the Spring DAO classes ?
|
Spring DAO classes throw
exceptions which are subclasses of
DataAccessException(org.springframework.dao.DataAccessException).Spring
provides a convenient translation from technology-specific exceptions
like SQLException to its own exception class hierarchy with the
DataAccessException as the root exception. These exceptions wrap the
original exception.
|
What is SQLExceptionTranslator ?
|
SQLExceptionTranslator, is an
interface to be implemented by classes that can translate between
SQLExceptions and Spring's own data-access-strategy-agnostic
org.springframework.dao.DataAccessException.
|
What
are the differences between EJB and Spring ?
|
| Feature |
EJB
|
Spring
|
Transaction
management
|
- Must use a JTA transaction manager.
- Supports transactions that span remote method calls.
|
- Supports multiple transaction environments through
its PlatformTransactionManager interface, including JTA, Hibernate,
JDO, and JDBC.
- Does not natively support distributed transactions-it
must be used with a JTA transaction manager.
|
Declarative transaction
support
|
- Can define transactions declaratively through the
deployment descriptor.
- Can define transaction behavior per method or per
class by using the wildcard character *.
- Cannot declaratively define rollback behavior-this
must be done programmatically.
|
- Can define transactions declaratively through the
Spring configuration file or through class metadata.
- Can define which methods to apply transaction
behavior explicitly or by using regular expressions.
- Can declaratively define rollback behavior per
method and per exception type.
|
Persistence
|
- Supports programmatic bean-managed persistence and
declarative container managed persistence.
|
- Provides a framework for integrating with several
persistence technologies, including JDBC, Hibernate, JDO, and iBATIS.
|
Declarative security
|
- Supports declarative security through users and
roles. The management and implementation of users and roles is
container specific.
- Declarative security is configured in the deployment
descriptor.
|
- No security implementation out-of-the box.
- Acegi, an open source security framework built on top
of Spring, provides declarative security through the Spring
configuration file or class metadata.
|
Distributed computing
|
- Provides container-managed remote method
calls.
|
- Provides proxying for remote calls via RMI, JAX-RPC,
and web services.
|
|
|
Page
1, Page
2, Page
3
|
|
|
|