What are template classes in Spring Java? Why are they called templates? For example jdbc-template, jms-template etc
Asked Answered
P

3

20

I'm new to Java. I've only been programming it for about a year. What does Spring mean by the use of templates? In Spring, there is jdbc-templates, jms-templates etc.. What are template classes in java? Are they a special kind of design pattern or what?

Thank you in advance.

Prejudicial answered 31/1, 2014 at 20:15 Comment(2)
Spring templates are based on the Template Method design patternCornhusk
@OriDar, JdbcTemplate is not an example of the Template Method design pattern. That pattern requires subclassing, whereas the doc for JdbcTemplate states, "there should be no need to subclass it."Pul
G
10

They are called template as use the Template method pattern.

Basically the idea is define the operation needed to do something in an abstract class or super class then implement a class that use the operation previous defined.

In the case of spring allow that operation that always need to be done for an specific purpose be done automatically, (open connection, obtain for pool, translation, execution, close connection), then user only need to call methods without worries about the previous tasks.

Grandfatherly answered 1/2, 2014 at 6:23 Comment(2)
Picked this answer because you mentioned about abstract classes. Now it makes sense how the boiler plate code is taken care of. Via abstract classes is one way. Thank youPrejudicial
JdbcTemplate is not an example of the Template Method design pattern. That pattern requires subclassing, whereas the doc for JdbcTemplate states, "there should be no need to subclass it." This answer is wrong.Pul
R
10

Spring templates are a way to eliminate boilerplate code that is needed to correctly use many APIs such as JDBC, JMS, transactions, etc. Boilerplate code is setup and error handling code that needs to be written in order to use correctly a API.

For example in JDBC, for executing a query the template will take care of the all setting of the connection, preparing the statement, releasing the connection after the query is done, handling exceptions all of which is non-trivial and easy to get wrong.

To the template you just need to pass in the query that you want to run, and the rest is taken care by the template.

Take the example on this blog post, a program of 80 lines executing a query in plain jdbc was reduced to 20 lines when using the spring JDBC template.

Rolypoly answered 31/1, 2014 at 23:25 Comment(3)
How is this accomplished? How do the 80 lines get shrunk to 20? Could you explain the implementation detail of how I can create my own template for example?Prejudicial
Have a look at the link in the blog post above (this answer), it has a good exampleRolypoly
Did you have a look at the example on the blog post above, did it answer your questions?Rolypoly
G
10

They are called template as use the Template method pattern.

Basically the idea is define the operation needed to do something in an abstract class or super class then implement a class that use the operation previous defined.

In the case of spring allow that operation that always need to be done for an specific purpose be done automatically, (open connection, obtain for pool, translation, execution, close connection), then user only need to call methods without worries about the previous tasks.

Grandfatherly answered 1/2, 2014 at 6:23 Comment(2)
Picked this answer because you mentioned about abstract classes. Now it makes sense how the boiler plate code is taken care of. Via abstract classes is one way. Thank youPrejudicial
JdbcTemplate is not an example of the Template Method design pattern. That pattern requires subclassing, whereas the doc for JdbcTemplate states, "there should be no need to subclass it." This answer is wrong.Pul
C
1

These kind of classes are used to simplify the functionality, letting low level issues asside of, for example, connecting to the database (all the dirty work is done by the jdbcTemplate class).

The JdbcTemplate simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy.

The only thing you need to actually implement are the CallBack methods. Implementing only callback methods let your code clean. Your only concern is to execute your business logic.

Cola answered 31/1, 2014 at 20:27 Comment(2)
Thank you edubriguenti. What are call back methods? Could you provide an example as it relates to jdbs-templates? Thank youPrejudicial
Callback methods are methods called by the framework. You just implement them (normally because you implemented an interface), but is the framework or API that actually called the method in the proper moment.Cola

© 2022 - 2024 — McMap. All rights reserved.