31. What are the types
of Advice?
Types of advice:
@ Before advice: Advice that executes
before a join point, but which does not have the ability to prevent execution
flow proceeding to the join point (unless it throws an exception).
@ After returning advice: Advice to be
executed after a join point completes normally: for example, if a method
returns without throwing an exception.
@ After throwing advice: Advice to be
executed if a method exits by throwing an exception.
@ After (finally) advice: Advice to be
executed regardless of the means by which a join point exits (normal or
exceptional return).
@ Around advice: Advice that surrounds a
join point such as a method invocation. This is the most powerful kind of
advice. Around advice can perform custom behavior before and after the method
invocation. It is also responsible for choosing whether to proceed to the join
point or to shortcut the advised method execution by returning its own return
value or throwing an exception.
32. What are the types
of the transaction management Spring supports ?
Spring Framework supports:
==>Programmatic
transaction management.
==>Declarative
transaction management.
33. 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.
34.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.
35. 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.
36. 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.
37. 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.
38. 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.
39. 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.
40. What is Spring's
JdbcTemplate ?
Spring's JdbcTemplate is central
class to interact with a database through JDBC. JdbcTemplate provides many
convenience methods for doing things such as converting database data into
primitives or objects, executing prepared and callable statements, and
providing custom database error handling.
JdbcTemplate template = new
JdbcTemplate(myDataSource);
41. What is PreparedStatementCreator
?
PreparedStatementCreator:
# Is
one of the most common used interfaces for writing data to database.
# Has
one method – createPreparedStatement(Connection)
# Responsible
for creating a PreparedStatement.
# Does
not need to handle SQLExceptions.
42. What is SQLProvider
?
SQLProvider:
==>Has
one method – getSql()
==>Typically
implemented by PreparedStatementCreator implementers
==>Useful
for debugging
43. What is
RowCallbackHandler ?
The RowCallbackHandler interface
extracts values from each row of a ResultSet.
==>Has
one method – processRow(ResultSet)
==>Called
for each row in ResultSet.
==>Typically
stateful.
44. 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.
|