<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments for Java Hair</title>
	<link>http://www.java-hair.com</link>
	<description>A Blog about Java, IT, and Music</description>
	<pubDate>Sat, 17 May 2008 06:13:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>Comment on The Dark Side of Frameworks: Part II by chriscmuir</title>
		<link>http://www.java-hair.com/2008/05/05/the-dark-side-of-frameworks-part-ii/#comment-47</link>
		<dc:creator>chriscmuir</dc:creator>
		<pubDate>Tue, 06 May 2008 07:56:38 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/05/05/the-dark-side-of-frameworks-part-ii/#comment-47</guid>
		<description>Nice post Robert.

There are other "issues" too that you alude to, such as:

1) The succession of one framework over another, creating a problem for legacy systems on where to go next.

2) Framework upgrades requiring the legacy system to either keep up, or risk being left behind.

3) Vendor or framework lock in.

To take an Oracle example, I've seen one site heavily use Oracle's Headstart, a very old Oracle Forms &#38; Designer framework, which then died a slow death, leaving the site stuck with code they neither owned or could receive upgrades for.

CM.</description>
		<content:encoded><![CDATA[<p>Nice post Robert.</p>
<p>There are other &#8220;issues&#8221; too that you alude to, such as:</p>
<p>1) The succession of one framework over another, creating a problem for legacy systems on where to go next.</p>
<p>2) Framework upgrades requiring the legacy system to either keep up, or risk being left behind.</p>
<p>3) Vendor or framework lock in.</p>
<p>To take an Oracle example, I&#8217;ve seen one site heavily use Oracle&#8217;s Headstart, a very old Oracle Forms &amp; Designer framework, which then died a slow death, leaving the site stuck with code they neither owned or could receive upgrades for.</p>
<p>CM.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Dark Side of Frameworks by Thomas Risberg</title>
		<link>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-46</link>
		<dc:creator>Thomas Risberg</dc:creator>
		<pubDate>Mon, 28 Apr 2008 15:27:31 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-46</guid>
		<description>I guess where we differ is on how soon investing in a data access framework pays off.  I can't think of many applications where I would want to be without one.  In my opinion an investment in Spring and/or JPA, Hibernate or Ibatis quickly provides benefits.

The exceptions get translated to a subclass of DataAccessException which is a runtime exception.  This is true for both JDBC and all other data access technologies supported by Spring.  That way your application don't need to worry about all the different exception hierarchies.

Thomas</description>
		<content:encoded><![CDATA[<p>I guess where we differ is on how soon investing in a data access framework pays off.  I can&#8217;t think of many applications where I would want to be without one.  In my opinion an investment in Spring and/or JPA, Hibernate or Ibatis quickly provides benefits.</p>
<p>The exceptions get translated to a subclass of DataAccessException which is a runtime exception.  This is true for both JDBC and all other data access technologies supported by Spring.  That way your application don&#8217;t need to worry about all the different exception hierarchies.</p>
<p>Thomas</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Dark Side of Frameworks by Robert Nocera</title>
		<link>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-45</link>
		<dc:creator>Robert Nocera</dc:creator>
		<pubDate>Sat, 26 Apr 2008 20:09:07 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-45</guid>
		<description>Thomas,

Exactly.  Like I said, if I was working on a project using Spring already, then I'd probably make use of the Spring JDBC template.  

Sometime I'll research how the JDBC Template is handling exceptions, that is one thing that struck me when looking at the example code, there aren't any being thrown.  I would assume that they aren't actually buried, but the if they aren't then the exception handling being done inside that framework is a little less than obvious.  Of course, I didn't actually try the example code, so perhaps it is ignoring the exception handling.

My intention with this post wasn't so much to pick on Spring at all, it's a decent framework for what it does, it was to point out that not all attempts to abstract complexity work, a lot of times they just move that complexity around.</description>
		<content:encoded><![CDATA[<p>Thomas,</p>
<p>Exactly.  Like I said, if I was working on a project using Spring already, then I&#8217;d probably make use of the Spring JDBC template.  </p>
<p>Sometime I&#8217;ll research how the JDBC Template is handling exceptions, that is one thing that struck me when looking at the example code, there aren&#8217;t any being thrown.  I would assume that they aren&#8217;t actually buried, but the if they aren&#8217;t then the exception handling being done inside that framework is a little less than obvious.  Of course, I didn&#8217;t actually try the example code, so perhaps it is ignoring the exception handling.</p>
<p>My intention with this post wasn&#8217;t so much to pick on Spring at all, it&#8217;s a decent framework for what it does, it was to point out that not all attempts to abstract complexity work, a lot of times they just move that complexity around.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Dark Side of Frameworks by Thomas Risberg</title>
		<link>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-44</link>
		<dc:creator>Thomas Risberg</dc:creator>
		<pubDate>Sat, 26 Apr 2008 19:03:55 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-44</guid>
		<description>Robert,

Introducing a framework does bring a bit of a learning curve and isn't something you should do without analyzing the benefits.  If you have an application with extremely simple data access requirements, then yes, using a framework might not pay off immediately.  However, looking at it long term and if you develop a number of applications then the JDBC framework investment quickly pays off.

It's more than just the code to make the call.  Any data access operation is part of an application and, except for an extremely simple application, you will at some point move beyond the autocommit mode. Now you need to manage your transactions. If you write code both for a standalone and a managed J2EE environment, the transaction management is very different and you can't easily re-use code in the different environments.  Using a framework like Spring gives you this transaction management on top of the JDBC framework and the transactions become transparent to your application.

Another issue with straight JDBC code is the resource management and try/finally blocks that tend to obscure the actual data access logic.  Moving these concerns to the framework not only prevents the JDBC programmer from messing this part up, it also makes your code more readable and maintainable.

Thomas</description>
		<content:encoded><![CDATA[<p>Robert,</p>
<p>Introducing a framework does bring a bit of a learning curve and isn&#8217;t something you should do without analyzing the benefits.  If you have an application with extremely simple data access requirements, then yes, using a framework might not pay off immediately.  However, looking at it long term and if you develop a number of applications then the JDBC framework investment quickly pays off.</p>
<p>It&#8217;s more than just the code to make the call.  Any data access operation is part of an application and, except for an extremely simple application, you will at some point move beyond the autocommit mode. Now you need to manage your transactions. If you write code both for a standalone and a managed J2EE environment, the transaction management is very different and you can&#8217;t easily re-use code in the different environments.  Using a framework like Spring gives you this transaction management on top of the JDBC framework and the transactions become transparent to your application.</p>
<p>Another issue with straight JDBC code is the resource management and try/finally blocks that tend to obscure the actual data access logic.  Moving these concerns to the framework not only prevents the JDBC programmer from messing this part up, it also makes your code more readable and maintainable.</p>
<p>Thomas</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Dark Side of Frameworks by Robert Nocera</title>
		<link>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-43</link>
		<dc:creator>Robert Nocera</dc:creator>
		<pubDate>Sat, 26 Apr 2008 15:57:36 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-43</guid>
		<description>Thomas:  I appreciate the comment.  SimpleJdbcCall may indeed be easier to use, it looks that way from your example.  Still, in my opinion, making a simple call like that is extremely simple in JDBC, so why complicate matters by introducing another framework?  A lot of times the complexity isn't relieved, it's just shifted somewhere else.

If I was working on a project that used Spring already, I'd probably look harder into using the Spring JDBC Template or SimpleJdbcCall, but if I'm not, JDBC itself is simple enough for me.</description>
		<content:encoded><![CDATA[<p>Thomas:  I appreciate the comment.  SimpleJdbcCall may indeed be easier to use, it looks that way from your example.  Still, in my opinion, making a simple call like that is extremely simple in JDBC, so why complicate matters by introducing another framework?  A lot of times the complexity isn&#8217;t relieved, it&#8217;s just shifted somewhere else.</p>
<p>If I was working on a project that used Spring already, I&#8217;d probably look harder into using the Spring JDBC Template or SimpleJdbcCall, but if I&#8217;m not, JDBC itself is simple enough for me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Dark Side of Frameworks by Thomas Risberg</title>
		<link>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-42</link>
		<dc:creator>Thomas Risberg</dc:creator>
		<pubDate>Fri, 25 Apr 2008 21:12:50 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/04/25/the-dark-side-of-frameworks/#comment-42</guid>
		<description>I agree that the StoredProcedure example is a bit verbose, especially when creating a DataSource.  This is typically injected into your class.  Even so, using the framework gives you the dependency injection, transaction management and unit test goodies for free.  The framework will also manage all resources, allow you to run in a JTA or local JDBC transaction environment without any code changes, so there are other benefits than fewer lines of code.

If you look at the new SimpleJdbcCall you'll see a simplified approach where parameters don't need to be declared if the framework can look them up in the database metadata.

Here is the SYSDATE example using SimpleJdbcCall:

 SimpleJdbcCall callSysdate =
     new SimpleJdbcCall(dataSource)
         .withFunctionName("sysdate")
         .withoutProcedureColumnMetaDataAccess()
         .declareParameters(new SqlOutParameter("return", Types.DATE));  
 Date sysDate = callSysdate.executeFunction(Date.class, Collections.EMPTY_MAP);
 System.out.println("--&#62; " + sysDate);

This is assuming that you already have the DataSource available.  Since SYSDATE is a built in function there is no metadata to look up so we need to turn off the metadata lookup and explicitly configure the out parameter.

Thomas</description>
		<content:encoded><![CDATA[<p>I agree that the StoredProcedure example is a bit verbose, especially when creating a DataSource.  This is typically injected into your class.  Even so, using the framework gives you the dependency injection, transaction management and unit test goodies for free.  The framework will also manage all resources, allow you to run in a JTA or local JDBC transaction environment without any code changes, so there are other benefits than fewer lines of code.</p>
<p>If you look at the new SimpleJdbcCall you&#8217;ll see a simplified approach where parameters don&#8217;t need to be declared if the framework can look them up in the database metadata.</p>
<p>Here is the SYSDATE example using SimpleJdbcCall:</p>
<p> SimpleJdbcCall callSysdate =<br />
     new SimpleJdbcCall(dataSource)<br />
         .withFunctionName(&#8221;sysdate&#8221;)<br />
         .withoutProcedureColumnMetaDataAccess()<br />
         .declareParameters(new SqlOutParameter(&#8221;return&#8221;, Types.DATE));<br />
 Date sysDate = callSysdate.executeFunction(Date.class, Collections.EMPTY_MAP);<br />
 System.out.println(&#8221;&#8211;&gt; &#8221; + sysDate);</p>
<p>This is assuming that you already have the DataSource available.  Since SYSDATE is a built in function there is no metadata to look up so we need to turn off the metadata lookup and explicitly configure the out parameter.</p>
<p>Thomas</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mapping Oracle Forms to ADF 11g - An Overview by smuench</title>
		<link>http://www.java-hair.com/2008/03/14/mapping-oracle-forms-to-adf-11g-an-overview/#comment-22</link>
		<dc:creator>smuench</dc:creator>
		<pubDate>Sat, 15 Mar 2008 12:07:02 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/03/14/mapping-oracle-forms-to-adf-11g-an-overview/#comment-22</guid>
		<description>Section "4.3.1 Familiar Concepts for Oracle Forms Developers" in the ADF Developer's Guide for Forms/4GL Developers on the ADF Learning Center at http://www.oracle.com/technology/products/adf/learnadf.html has a bit more info as well. "Appendix C: ADF Equivalents of Common Oracle Forms Triggers" is a slightly updated version of the standalone article you point to above. Hope this helps.</description>
		<content:encoded><![CDATA[<p>Section &#8220;4.3.1 Familiar Concepts for Oracle Forms Developers&#8221; in the ADF Developer&#8217;s Guide for Forms/4GL Developers on the ADF Learning Center at <a href="http://www.oracle.com/technology/products/adf/learnadf.html" rel="nofollow">http://www.oracle.com/technology/products/adf/learnadf.html</a> has a bit more info as well. &#8220;Appendix C: ADF Equivalents of Common Oracle Forms Triggers&#8221; is a slightly updated version of the standalone article you point to above. Hope this helps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Fun with Oracle&#8217;s ADF by johnprugby</title>
		<link>http://www.java-hair.com/2008/01/05/fun-with-oracles-adf/#comment-6</link>
		<dc:creator>johnprugby</dc:creator>
		<pubDate>Mon, 07 Jan 2008 14:36:33 +0000</pubDate>
		<guid>http://www.java-hair.com/2008/01/05/fun-with-oracles-adf/#comment-6</guid>
		<description>My exposure to ADF has been to focus on the security aspects of 11g.  It is an incredibly promising approach to security that goes far beyond placing controls on access to pages typical of web-based applications. Combining a robust role-based registry with the ability to control access to items available on various pages allows developers to focus on business logic and not the presentation layer.  

It would take more time than the average reader would spend reading a blog entry to get a good handle on the capabilities of ADF in the security realm, so let me power-off by saying that ADF's approach to security going forward is one of the more exciting developments in the sphere of  internet application development. ADF is preparing for a world where applications are much more than a series of pages.</description>
		<content:encoded><![CDATA[<p>My exposure to ADF has been to focus on the security aspects of 11g.  It is an incredibly promising approach to security that goes far beyond placing controls on access to pages typical of web-based applications. Combining a robust role-based registry with the ability to control access to items available on various pages allows developers to focus on business logic and not the presentation layer.  </p>
<p>It would take more time than the average reader would spend reading a blog entry to get a good handle on the capabilities of ADF in the security realm, so let me power-off by saying that ADF&#8217;s approach to security going forward is one of the more exciting developments in the sphere of  internet application development. ADF is preparing for a world where applications are much more than a series of pages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Logically and Practically Offshoring by djbeall</title>
		<link>http://www.java-hair.com/2007/08/14/logically-and-practically-offshoring/#comment-2</link>
		<dc:creator>djbeall</dc:creator>
		<pubDate>Thu, 27 Dec 2007 05:47:30 +0000</pubDate>
		<guid>http://www.java-hair.com/2007/08/14/logically-and-practically-offshoring/#comment-2</guid>
		<description>Good article; thanks!</description>
		<content:encoded><![CDATA[<p>Good article; thanks!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
