• No results found

Introduction to Spring JDBC Spring JDBC development Spring IoC integration

N/A
N/A
Protected

Academic year: 2019

Share "Introduction to Spring JDBC Spring JDBC development Spring IoC integration"

Copied!
28
0
0

Loading.... (view fulltext now)

Full text

(1)

© 2008 coreservlets.com

Spring JDBC

Spring JDBC

Part 1

Originals of Slides and Source Code for Examples:

http://courses.coreservlets.com/Course-Materials/spring.html

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

© 2008 coreservlets.com

For live Spring & Hibernate training, see

t htt //

l t

/

courses at http://courses.coreservlets.com/.

Taught by the experts that brought you this tutorial.

Available at public venues or customized versions

Available at public venues, or customized versions

can be held on-site at your organization.

C d l d d t ht b M t H ll

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6.

•Courses developed and taught by Marty Hall

–Java 5, Java 6, intermediate/beginning servlets/JSP, advanced servlets/JSP, Struts, JSF, Ajax, GWT, custom mix of topics

•Courses developed and taught by coreservlets.com experts (edited by Marty)

–Spring, Hibernate/JPA, EJB3, Ruby/Rails

(2)

Topics in This Section

p

Introduction to Spring JDBC

Spring JDBC development

Spring IoC integration

Java EE training: http://courses.coreservlets.com

© 2008 coreservlets.com

Introduction

Customized Java EE Training: http://courses.coreservlets.com/

(3)

Motivation

public void save(Customer customer) { Connection conn = null; boolean autoCommit = false; try{

hi d i ()

private boolean update(Customer customer, Connection conn) {

PreparedStatement stmt = null; try{

stmt conn prepareStatement(

private boolean insert(Customer customer, Connection conn) {

PreparedStatement stmt = null; try{

stmt conn prepareStatement( conn = this.dataSource.getConnection();

autoCommit = conn.getAutoCommit(); conn.setAutoCommit(false); if(!update(customer, conn)){ insert(customer, conn); } conn.commit(); } catch(SQLException e){

stmt = conn.prepareStatement(

"update customer set name = ? where id = ?"); stmt.setString(1, customer.getName()); stmt.setString(2, customer.getId()); return stmt.executeUpdate() > 0; }

catch(SQLException e){

throw new CustomerPersistenceException("Error: SQL."

il d d )

stmt = conn.prepareStatement(

"insert into customer (id, name) values (?, ?)");

stmt.setString(1, customer.getId()); stmt.setString(2, customer.getName()); return stmt.executeUpdate() > 0; }

catch(SQLException e){

throw new CustomerPersistenceException("Error: SQL "

if(conn != null){ try{

conn.rollback(); }

catch(SQLException suppressed){} }

throw new CustomerPersistenceException("Error: SQL."

+ " Error saving customer: " + customer,e);

+ " Failed to update customer.",e); }

finally{ if(stmt != null){

try{ stmt.close(); stmt = null; }

catch(Exception suppressed){}

SQL."

+ " Failed to insert customer.",e); }

finally{ if(stmt != null){

try{ stmt.close(); stmt = null; }

}

catch(RuntimeException e){ if(conn != null){

try{

conn.rollback(); }

catch(SQLException suppressed){} }

throw new CustomerPersistenceException("Error: } } } catch(Exception suppressed){} } } }

throw new CustomerPersistenceException( Error: SQL."

+ " Error saving customer: " + customer,e); }

finally{ if(conn != null){

try{

conn.setAutoCommit(autoCommit); conn.close();

conn = null;

Java EE training: http://courses.coreservlets.com

conn = null; }

catch(SQLException suppressed){} }

} }

Spring JDBC Solution

p

g

public void save(Customer customer) { Map<String, Object> parameterMap = Map<String, Object> parameterMap

new HashMap<String, Object>();

parameterMap.put("customerId", customer.getId()); parameterMap.put("customerName", customer.getName());

boolean updated = simpleJdbc.update(

"update customer set name = :customerName" + " where id = :customerId" parameters) > 0; + where id = :customerId , parameters) > 0;

if(updated){ return; }

simpleJdbc.update(

"i t i t t (id )" "insert into customer (id, name)"

(4)

Spring JDBC

p

g

Standalone JDBC software

N d d i i S i I C t i

– No dependencies on a running Spring IoC container

Templated software

– Replaces tedious Java SQL APIs

i i C i i k

– Mitigates JDBC resource mismanagement risks

No configuration management overhead

– No XML

– No annotations

Pure code solution

– Explicit settings

– Verbose

– No class or domain modeling constraints • Interface-driven domain models

Java EE training: http://courses.coreservlets.com

• Complex constructors

• Separates class and relational cardinality

Outperforms O/R mapping solutions

Spring JDBC Templates

p

g

p

Fine-grained templates

JdbcTemplate

NamedParameterJdbcTemplate

Coarse grained templates

Coarse-grained templates

SimpleJdbcTemplate

SimpleJdbcInsert

p

SimpleJdbcCall

SQL objects

SqlUpdate

MappingSqlQuery

(5)

© 2008 coreservlets.com

S i

I C P

Spring IoC Process

Review

Review

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Spring IoC Process

p

g

Develop POJO library

D fi th i t f

– Define the interfaces

– Create the implementations

Register Spring JARs

i j

– spring-core.jar

– spring-context.jar

– spring-beans.jar l i j

– commons-logging.jar

Create the bean definitions file

– Default to the file name applicationContext.xml

– Place the file in an accessible location

Register beans

– Register the spring-beans XML schema into the bean definitions file Assign bean identifiers using the idattribute

– Specify the bean creation method; e.g, the classattribute for direct

(6)

Spring IoC Process Continued

p

g

Integrate configuration

Register thes i c t tXML schema into the bean definitions

– Register the spring-contextXML schema into the bean definitions

file

– Declare a property-placeholderelement with the configuration file

path assigned to thelocationattribute

path assigned to the locationattribute

Define bean interdependencies

– Select a DI method; e.g., constructor, property setter, lookup-method, etc…

– Specify the injection value; e g collaborators values resources etc

– Specify the injection value; e.g., collaborators, values, resources, etc…

Initialize container

– Select an ApplicationContext implementation

• The integration method will depend on the target environment

• The integration method will depend on the target environment

– Specify the location of the bean definitions file(s)

Access and use beans from the Spring IoC container

For example via the BeanFactory API

Java EE training: http://courses.coreservlets.com

– For example, via the BeanFactory API

BeanFactory#getBean(beanName:String):Object

BeanFactory#getBean(beanName:String,

requiredType:Class):Object

Develop POJO Library

p

y

package coreservlets;

public class Customer {

private String id; private String name;

public Customer(String id, String name){ this id = id;

this.id = id; this.name = name; }

public String getId() { return id;

}

public String getName() { t

Java EE training: http://courses.coreservlets.com

return name; }

(7)

Develop POJO Library

p

y

public interface CustomerQuery {

public Customer getCustomerByName(String name);

}

Java EE training: http://courses.coreservlets.com

Develop POJO Library

p

y

public class CustomerQueryImpl implements CustomerQuery {

private List<Customer> customers;

public CustomerQueryImpl(List<Customer>customers) { this.customers = customers;

}

public Customer getCustomerByName(String name) { public Customer getCustomerByName(String name) {

for(Customer c : customers){ if(c.getName().equals(name)){

return c; }

}

return null; }

(8)

Register Spring JARs

g

p

g

Java EE training: http://courses.coreservlets.com

Register Spring JARs

Eclipse classpath

Eclipse .classpath

<?xml version="1.0" encoding="UTF-8"?> <classpath>

<classpath>

<classpathentry kind="src" path="src"/>

<classpathentry kind="lib" path="lib/spring-core.jar" /> <classpathentry kind="lib" path="lib/spring-beans.jar" /> <classpathentry kind="lib" path="lib/spring-context.jar" /> <classpathentry kind="lib" path="lib/commons-logging.jar"/> <classpathentry kind="con"

path="org eclipse jdt launching JRE CONTAINER"/> path= org.eclipse.jdt.launching.JRE_CONTAINER /> <classpathentry kind="output" path=".eclipseclasses"/> </classpath>

(9)

Create the bean definitions file

Default to

applicationContext.xml

Place the file in an accessible location

Classpath, filesystem or web module path

Java EE training: http://courses.coreservlets.com

Register Beans

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

(10)

Register Beans

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="customerQuery"

class="coreservlets.mockup.CustomerQueryImpl" />

</beans>

Java EE training: http://courses.coreservlets.com

Define Bean Interdependencies

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="customerQuery"

class="coreservlets.mockup.CustomerQueryImpl"> <constructor-arg>

<constructor-arg> <list>

<bean class="coreservlets.Customer"> <property name="id" value="jjoe" />

<property name="name" value="Java Joe" /> </bean>

</list> / t t

Java EE training: http://courses.coreservlets.com

</constructor-arg> </bean>

(11)

Initialize Container

import org.springframework.context.support.*;

public class Main {

public static void main(String[]args) {

BeanFactory beanFactory =

new ClassPathXmlApplicationContext( "/applicationContext.xml");

} } }

Java EE training: http://courses.coreservlets.com

Access and Use Beans

import org.springframework.context.support.*; public class Main {

public class Main {

public static void main(String[]args) {

BeanFactory beanFactory =

new ClassPathXmlApplicationContext( "/applicationContext.xml");

CustomerQuery query =

(CustomerQuery) beanFactory.getBean("customerQuery");

C t t

Customer customer =

query.getCustomerByName("Java Joe");

System out println(customer); System.out.println(customer); }

}

Standard output

(12)

© 2008 coreservlets.com

S i

JDBC

Spring JDBC

Process

Process

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Spring JDBC Process

p

g

Define persistence interfaces

Register Spring JDBC JARs

Compilation dependencies

• spring-jdbc jarspring jdbc.jar • spring-tx.jar

Runtime dependencies

• spring core jar • spring-core.jar • spring-context.jar • spring-beans.jar • commons-logging jar • commons-logging.jar

(13)

Spring JDBC Process

Continued

Continued

Create persistence implementations

Defer connectivity responsibilities

Design class for

DataSource

dependency injection

Use Spring JDBC APIs

p

g

Initialize Spring JDBC template(s) with the injected

DataSource

Initialize and execute the persistence objects

Initialize and execute the persistence objects

Instantiate the persistence objects

• Inject a DataSource object for connectivity

Java EE training: http://courses.coreservlets.com

Develop Persistence Interfaces

p

public interface CustomerQuery {

public Customer getCustomerByName(String name);

(14)

Develop Persistence Interfaces

p

package coreservlets;

public class Customer {

private String id;

private String name;

public Customer(String id String name){ public Customer(String id, String name){

this.id = id; this.name = name; }

public String getId() { return id;

}

bli St i tN () {

Java EE training: http://courses.coreservlets.com

public String getName() { return name;

} }

Register Spring JDBC JARs

g

p

g

(15)

Register Spring JDBC JARs

Eclipse classpath

Eclipse .classpath

<?xml version="1.0" encoding="UTF-8"?> <classpath>

<classpath>

<classpathentry kind="src" path="src"/> <classpathentry kind="lib" path="lib/spring-core.jar" />

<classpathentry kind="lib" path="lib/spring-beans.jar" /> l h ki d lib h lib/ i jdb j / <classpathentry kind="lib" path="lib/spring-jdbc.jar" /> <classpathentry kind="lib" path="lib/spring-tx.jar" /> <classpathentry kind="lib" path="lib/commons-logging.jar"/> <classpathentry kind="con"

<classpathentry kind con

path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path=".eclipseclasses"/> </classpath>

Java EE training: http://courses.coreservlets.com

Implement Persistence Class

p

import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.dao.*;

import org.springframework.jdbc.core.simple.*;

public class SpringJdbcCustomerQuery public class SpringJdbcCustomerQuery implements CustomerQuery {

private SimpleJdbcTemplate jdbc;

public SpringJdbcCustomerQuery(DataSource dataSource) { this.jdbc = new SimpleJdbcTemplate(dataSource);

(16)

Implement Persistence Class

Continued

Continued

public class SpringJdbcCustomerQuery implements CustomerQuery {

implements CustomerQuery { ...

public Customer getCustomerByName(String customerName) { try{

return this.jdbc.queryForObject(

"select id, name from customer where name = ?" , customerRowMapper

customerName); , customerName); }

catch(EmptyResultDataAccessException e){ return null;

} } ... }

Java EE training: http://courses.coreservlets.com

}

Initialize and Execute

Persistence Objects

Persistence Objects

public class Main {

public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {

DataSource dataSource =

new EmbeddedDerbyDataSource( "target/ngcdb", "/setup.sql"); CustomerQuery query =

new SpringJdbcCustomerQuery(dataSource); Customer customer =

query getCustomerByName("Java Joe"); query.getCustomerByName( Java Joe ); System.out.println(customer);

} }

Java EE training: http://courses.coreservlets.com Standard output

(17)

© 2008 coreservlets.com

S i

JDBC

d

Spring JDBC and

Spring IoC Process

Spring IoC Process

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Spring JDBC and Spring IoC

Process

Process

Register Spring JARs

i j

– spring-core.jar

– spring-context.jar

– spring-beans.jar

spring jdbc jar

– spring-jdbc.jar

– spring-tx.jar

– commons-logging.jar

Develop persistence interfaces

Develop persistence interfaces

Create the persistence implementations

– Defer connectivity responsibilities

• Design class for DataSourcedependency injection

– Use Spring JDBC APIs

• Initialize Spring JDBC template(s) with the injected DataSource

Create the bean definitions file

– Default to the file name applicationContext.xml

(18)

Spring JDBC and Spring IoC

Process Continued

Process Continued

Register beans

R i t th i b XML h i t th b d fi iti fil

– Register the spring-beans XML schema into the bean definitions file Assign bean identifiers using the idattribute

Register a DataSource bean

Register persistence implementation beans

– Specify the bean creation method; e.g, the classattribute for direct

constructor invocation

Integrate configuration

– Register the spring-contextXML schema into the bean definitions

file

– Declare a property-placeholderelement with the configuration file

th i d t th l ti tt ib t

path assigned to the locationattribute

Map DataSource configuration into DataSource

Define bean interdependencies

S l t DI th d t t t tt l k th d t

Java EE training: http://courses.coreservlets.com

– Select a DI method; e.g., constructor, property setter, lookup-method, etc…

– Specify the injection value; e.g., collaborators, values, resources, etc… • Register the DataSource with persistence implementations

Spring JDBC and Spring IoC

Process Continued

Process Continued

Initialize container

S l t A li ti C t t i l t ti

– Select an ApplicationContext implementation

• The integration method will depend on the target environment

– Specify the location of the bean definitions file(s)

Access and use beans from the Spring IoC container

Access and use beans from the Spring IoC container

– For example, via the BeanFactory API

BeanFactory#getBean(beanName:String):Object

BeanFactory#getBean(beanName:String,

requiredType:Class):Object

(19)

Develop Persistence Interfaces

p

public interface CustomerQuery {

public Customer getCustomerByName(String name);

}

Java EE training: http://courses.coreservlets.com

Develop Persistence Interfaces

p

package coreservlets;

public class Customer {

private String id;

private String name;

public Customer(String id String name){ public Customer(String id, String name){

this.id = id; this.name = name; }

public String getId() { return id;

}

bli St i tN () { public String getName() {

(20)

Register Spring JDBC JARs

g

p

g

Java EE training: http://courses.coreservlets.com

Register Spring JDBC JARs

Eclipse classpath

Eclipse .classpath

<?xml version="1.0" encoding="UTF-8"?> <classpath>

<classpath>

<classpathentry kind="src" path="src"/>

<classpathentry kind="lib" path="lib/spring-core.jar" /> <classpathentry kind="lib" path="lib/spring-beans.jar" /> <classpathentry kind="lib" path="lib/spring-context.jar" /> <classpathentry kind="lib" path="lib/spring-jdbc.jar" /> <classpathentry kind="lib" path="lib/spring-tx.jar" /> <classpathentry kind="lib" path="lib/commons-logging jar"/> <classpathentry kind= lib path= lib/commons-logging.jar /> <classpathentry kind="con"

path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path=".eclipseclasses"/> </classpath>

(21)

Implement Persistence Class

p

import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.dao.*;

import org.springframework.jdbc.core.simple.*;

public class SpringJdbcCustomerQuery public class SpringJdbcCustomerQuery implements CustomerQuery {

private SimpleJdbcTemplate jdbc;

public SpringJdbcCustomerQuery(DataSource dataSource) { jdbc = new SimpleJdbcTemplate(dataSource);

}

Java EE training: http://courses.coreservlets.com

} ... }

Implement Persistence Class

Continued

Continued

public class SpringJdbcCustomerQuery implements CustomerQuery {

implements CustomerQuery { ...

private ParameterizedRowMapper<Customer> customerRowMapper = new ParameterizedRowMapper<Customer>(){

public Customer mapRow(ResultSet rslt, int rowNum) throws SQLException {

return new Customer(rslt.getString("id"), rslt getString("name")); rslt.getString( name )); }

(22)

Implement Persistence Class

Continued

Continued

public class SpringJdbcCustomerQuery implements CustomerQuery {

implements CustomerQuery { ...

public Customer getCustomerByName(String customerName) { try{

return jdbc.queryForObject(

"select id, name from customer where name = ?" , customerRowMapper

customerName); , customerName); }

catch(EmptyResultDataAccessException e){ return null;

} } ... }

Java EE training: http://courses.coreservlets.com

}

Create the bean definitions file

Default to

applicationContext.xml

Place the file in an accessible location

Classpath, filesystem or web module path

(23)

Register Beans

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

</beans>

Java EE training: http://courses.coreservlets.com

Register Beans

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="customerQuery"

class="coreservlets.SpringJdbcCustomerQuery" />

<bean id="dataSource"

class="coreservlets.util.EmbeddedDerbyDataSource" />

(24)

Integrate Configuration

g

g

Create the properties file

dataSource.properties

Place the file in an accessible location

l

th

t

classpath root

Java EE training: http://courses.coreservlets.com

Integrate Configuration

g

g

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<bean id="customerQuery"

class="coreservlets.SpringJdbcCustomerQuery" />

<bean id="dataSource"

class="coreservlets.util.EmbeddedDerbyDataSource" />

/b

Java EE training: http://courses.coreservlets.com

(25)

Integrate Configuration

g

g

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:property-placeholder

location="classpath:/dataSource.properties" />

<bean id="customerQuery"

class="coreservlets.SpringJdbcCustomerQuery" />

b id "d t S "

Java EE training: http://courses.coreservlets.com

<bean id="dataSource"

class="coreservlets.util.EmbeddedDerbyDataSource" /> </beans>

Define Bean Interdependencies

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns http://www.springframework.org/schema/beans

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="customerQuery" class="coreservlets.SpringJdbcCustomerQuery"> <constructor-arg ref="dataSource" />

</bean> </bean>

<bean id="dataSource" class="coreservlets.util.EmbeddedDerbyDataSource"> <constructor-arg value="${derby.db.name}" />

<constructor-arg> <list>

<value>${derby.db.setup}</value> /li t

</list>

(26)

Initialize Container

import org.springframework.context.support.*;

public class Main {

public static void main(String[]args) {

BeanFactory beanFactory =

new ClassPathXmlApplicationContext( "/applicationContext.xml");

} } }

Java EE training: http://courses.coreservlets.com

Access and Use Beans

import org.springframework.context.support.*; public class Main {

public class Main {

public static void main(String[]args) {

BeanFactory beanFactory =

new ClassPathXmlApplicationContext( "/applicationContext.xml");

CustomerQuery query =

(CustomerQuery) beanFactory.getBean("customerQuery");

C t t

Customer customer =

query.getCustomerByName("Java Joe");

System out println(customer);

Java EE training: http://courses.coreservlets.com

System.out.println(customer); }

}

Standard output

(27)

© 2008 coreservlets.com

W

Wrap-up

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, Struts, JSF/MyFaces/Facelets, Ajax, GWT, Spring, Hibernate/JPA, Java 5 & 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Spring JDBC and Spring IoC

Process

Process

Spring JARs

i

jdb j

i

t j

i

j

i

jdbc.jar, tx.jar, core.jar,

spring-context.jar, spring-beans.jar, commons-logging.jar

Develop persistence implementations

– Initialize JDBC template(s) with a DataSource

– Defer connectivity responsibilities. Use constructor or property setter DI integrating with the DataSource

C

Create

applicationContext.xml

– Save in an accessible location

Register and wire beans

g

– Register spring-beansXML schema

– Create persistence and DataSourcebeans

– Wire DataSourcebean into persistence beans using constructor or

(28)

Spring JDBC and Spring IoC

Process Continued

Process Continued

Integrate configuration

C t d th ti fil i ibl l ti

– Create and save the properties file in an accessible location

– Register spring-contextXML schema

– Create a property-placeholderdeclaration with a location

attribute attribute

Initialize container

– Instantiate a BeanFactory

• e g ClassPathXmlApplicationContext

• e.g., ClassPathXmlApplicationContext

Access and use beans from the Spring IoC container

– Pass the bean name to

BeanFactory#getBean(beanName:String):Object BeanFactory#getBean(beanName:String):Object

Java EE training: http://courses.coreservlets.com

© 2008 coreservlets.com

Q

ti

?

Questions?

Customized Java EE Training: http://courses.coreservlets.com/

References

Related documents

The cell e.s.d.'s are taken into account individually in the estimation of e.s.d.'s in distances, angles and torsion angles; correlations between e.s.d.'s in cell parameters are

The leaves of the tested cultivars, irrespective of the level of resistance to filbert aphid, showed a definitely higher concen- tration of acids, derivatives of trans -cinnamic

The lowest damage was observed in the treatment with Biscaya 240 OD (0.05 boreholes/ capsule) and Spintor (0.08 boreholes/ capsule), and there was a highly significant difference

complementary base pairing involves 2-amino group and ring N3 i atom of inversion related pyrimidine moiety of AMPY. These discrete

The increase of germination percentage and germi- nation rate with the rise of temperature demonstrated that seeds were incubated in the range of suboptimal temperatures for

The objectives of this study were to ( i ) investigate the effect of different concentrations of several fungicides commonly used in the Czech Republic to control Sclero- tinia

The ethoxycarbonyl unit is present in a synperiplanar conformation with respect to the pyrrole ring, as indicated by the dihedral angle of 14.5 (3).. In

The cell e.s.d.'s are taken into account individually in the estimation of e.s.d.'s in distances, angles and torsion angles; correlations between e.s.d.'s in cell parameters are