<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>EasierJava Blog</title>
	<atom:link href="http://easierjava.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://easierjava.wordpress.com</link>
	<description>Commenting On Our Software Projects</description>
	<lastBuildDate>Mon, 06 May 2013 06:31:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='easierjava.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>EasierJava Blog</title>
		<link>http://easierjava.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://easierjava.wordpress.com/osd.xml" title="EasierJava Blog" />
	<atom:link rel='hub' href='http://easierjava.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Easy Java Websites (EJW) 3.0 Released</title>
		<link>http://easierjava.wordpress.com/2012/02/06/easy-java-websites-ejw-3-0-released/</link>
		<comments>http://easierjava.wordpress.com/2012/02/06/easy-java-websites-ejw-3-0-released/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 08:54:46 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJW]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=221</guid>
		<description><![CDATA[Easy java Websites (EJW) has been released. This version is a major release and includes new forms tags, several convenience methods added to RequestHandler, and mime typed file extensions are now ignored by default (forwarded to the default servlet). Information &#8230; <a href="http://easierjava.wordpress.com/2012/02/06/easy-java-websites-ejw-3-0-released/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=221&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Easy java Websites (EJW) has been released. This version is a major release and includes new forms tags, several convenience methods added to RequestHandler, and mime typed file extensions are now ignored by default (forwarded to the default servlet).</p>
<p>Information regarding the new form tags can be found at: <a title="http://www.easierjava.com/downloads/ejw/ejw_tags.pdf" href="http://www.easierjava.com/downloads/ejw/ejw_tags.pdf">http://www.easierjava.com/downloads/ejw/ejw_tags.pdf</a></p>
<p>The most common methods used in ServerInterface, such as addViewObject(), were added to the RequestHandler for friendlier access.</p>
<p>URLs with mime typed extensions (eg. .jpg, .gif, etc.) are now ignored by default and forwarded to the default servlet.  If you require handling of a mime (eg. image server) type you can use:</p>
<p style="padding-left:60px;">&lt;init-param&gt;<br />
&lt;param-name&gt;handleMimeTypes&lt;/param-name&gt;<br />
&lt;param-value&gt;gif, jpg&lt;/param-value&gt;<br />
&lt;/init-param&gt;</p>
<p style="padding-left:60px;">see manual.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=221&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2012/02/06/easy-java-websites-ejw-3-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence and Stored Procedures (MySql and Oracle examples)</title>
		<link>http://easierjava.wordpress.com/2011/12/22/easy-java-persistence-and-stored-procedures-mysql-and-oracle-examples/</link>
		<comments>http://easierjava.wordpress.com/2011/12/22/easy-java-persistence-and-stored-procedures-mysql-and-oracle-examples/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 16:13:09 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=206</guid>
		<description><![CDATA[NOTE: The following examples use the class definitions: Customer.java, Order.java, Support.java. EJP even makes working with stored procedures and functions easy to handle. Simply use the JDBC stored procedure syntax: {?= call procedureName [(?, ?, ?, ...)]} {call procedureName [(?, &#8230; <a href="http://easierjava.wordpress.com/2011/12/22/easy-java-persistence-and-stored-procedures-mysql-and-oracle-examples/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=206&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>NOTE</strong>: The following examples use the class definitions: <a title="Customer.java" href="http://www.easierjava.com/downloads/ejp/examples/Customer.java">Customer.java</a>, <a title="Order.java" href="http://www.easierjava.com/downloads/ejp/examples/Order.java">Order.java</a>, <a title="Support.java" href="http://www.easierjava.com/downloads/ejp/examples/Support.java">Support.java</a>.</p>
<p>EJP even makes working with stored procedures and functions easy to handle.  Simply use the JDBC stored procedure syntax:</p>
<pre>
       {?= call procedureName [(?, ?, ?, ...)]}
       {call procedureName [(?, ?, ?, ...)]}
</pre>
<p>and call ejp.Database&#8217;s storedProcedure with one or more of InParameter, OutParameter, and InOutParameter to pass data to and from the procedure.  </p>
<p>storedprocedure() returns an ejp.Result that may have one or more results and/or update counts that can be accessed with getMoreResults(), isUpdateCount(), getUpdateCount().  When done, you can access the out parameters by retrieving the CallableStatement with getStatement().  In the case of databases that only use out parameters (Oracle) ejp.Result will not have any result sets in the result, but the result will provide access to the CallableStatement used for the stored procedure, so that the out parameters can be accessed.</p>
<p>The following stored procedure examples demonstrate everything you&#8217;ll need to access stored procedures with any database that supports them:</p>
<p>MySql Stored Procedure:</p>
<pre>
CREATE PROCEDURE getCustomerOrdersAndSupport(in id varchar(20), out total decimal(5,2))
BEGIN
    select sum(quantity * price) into total from orders where customer_id = id;
    select * from orders where customer_id = id;
    select * from support where customer_id = id;
END
</pre>
<p>The following is how you access the MySql stored procedure:</p>
<pre>
Result result = db.storedProcedure("{call getCustomerOrdersAndSupport(?,?)}", 
                                   new InParameter(1, "deisenhower"),
                                   new OutParameter(2, Types.DOUBLE, 2));
</pre>
<p>And then you can process the results and out parameters with:</p>
<pre>
// Map orders from the orders cursor
for (Order order : (Result)result.getResultSetWithClass(Order.class))
  System.out.println(order);
            
result.getMoreResults();

// Map support from the support cursor
for (Support s : (Result)result.getResultSetWithClass(Support.class))
  System.out.println(s);

System.out.println("Order total: " + ((CallableStatement)result.getStatement()).getDouble(2));
</pre>
<p>See the source for this example: <a title="StoredProcedure.java" href="http://www.easierjava.com/downloads/ejp/examples/StoredProcedure.java">StoredProcedure.java</a></p>
<p>MySql and Most databases return result cursors in the result set returned.  You can then use getMoreResults(), isUpdateCount(), getUpdateCount() to access them.  Oracle is a little different, as it passes result cursors as out parameters, so the following is how you would handle this case:</p>
<p>Oracle Procedure:</p>
<pre>
create or replace procedure getCustomerOrdersAndSupport
    (id IN varchar, total OUT decimal, orders_cursor OUT SYS_REFCURSOR, support_cursor OUT SYS_REFCURSOR) is
begin
    select sum(quantity * price) into total from orders where customer_id = id;
    OPEN orders_cursor FOR select * from orders where customer_id = id;
    OPEN support_cursor FOR select * from support where customer_id = id;
end getCustomerOrdersAndSupport;
</pre>
<p>NOTE: This example requires EJP 3.6.5, which was just released with a small change to the way ejp.Result handles next and previous, as Oracle returns a forward only resultSet.</p>
<p>You can access the Oracle stored procedure with:</p>
<pre>
Result result = db.storedProcedure("{call getCustomerOrdersAndSupport(?,?,?,?)}", 
                                   new InParameter(1, "deisenhower"),
                                   new OutParameter(2, Types.DOUBLE, 2),
                                   new OutParameter(3, OracleTypes.CURSOR),
                                   new OutParameter(4, OracleTypes.CURSOR));
</pre>
<p>And then you can process the out parameters with:</p>
<pre>
/*
 * Map orders from the orders cursor.
 * 
 * Oracle returns cursors as out parameters, so we have to handle the out parameters in the following way.
 */
Result orders = new Result(db, (ResultSet)((CallableStatement)result.getStatement()).getObject(3), Order.class);
            
for (Order order : orders)
  System.out.println(order);

// Map support from the support cursor
Result support = new Result(db, (ResultSet)((CallableStatement)result.getStatement()).getObject(4), Support.class);

for (Support s : support)
  System.out.println(s);

System.out.println("Order total: " + ((CallableStatement)result.getStatement()).getDouble(2));
</pre>
<p>See the source for this example: <a title="StoredProcedureOracle.java" href="http://www.easierjava.com/downloads/ejp/examples/StoredProcedureOracle.java">StoredProcedureOracle.java</a></p>
<p>Notice the difference?  Instead of the ejp.Result having multiple result sets.  We have to get the result sets as out parameters.  Not a big deal, we can simply create an instance of ejp.Result and pass the java.sql.ResultSet, along with the class for mapping information, and then process the result in the same manner as the MySql example.</p>
<p>That&#8217;s it.  With this functionality you can access your stored procedures and get whatever values and/or cursors you require.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=206&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/12/22/easy-java-persistence-and-stored-procedures-mysql-and-oracle-examples/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence (EJP) 3.6 has been released</title>
		<link>http://easierjava.wordpress.com/2011/12/21/easy-java-persistence-ejp-3-6-has-been-released/</link>
		<comments>http://easierjava.wordpress.com/2011/12/21/easy-java-persistence-ejp-3-6-has-been-released/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 13:48:28 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=204</guid>
		<description><![CDATA[Easy Java Persistence (EJP) 3.6 has been released. This release has loadObject and loadObjects added to ejp.Database. Also has further refinements to examples.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=204&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Easy Java Persistence (EJP) 3.6 has been released.  This release has loadObject and loadObjects added to ejp.Database.  Also has further refinements to examples.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=204&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/12/21/easy-java-persistence-ejp-3-6-has-been-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence and JDBC Toolbox</title>
		<link>http://easierjava.wordpress.com/2011/12/19/easy-java-persistence-and-jdbc-toolbox/</link>
		<comments>http://easierjava.wordpress.com/2011/12/19/easy-java-persistence-and-jdbc-toolbox/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 05:13:19 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=168</guid>
		<description><![CDATA[Easy Java Persistence (EJP) 3.5 has been released, and it is huge! This release fixes all known issues. All functionality/features have been thoroughly tested on every major database platform (Oracle, DB2, PostgreSql, Mysql, SQL Server, HSQL, H2, and Derby). This &#8230; <a href="http://easierjava.wordpress.com/2011/12/19/easy-java-persistence-and-jdbc-toolbox/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=168&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Easy Java Persistence (EJP) 3.5 has been released, and it is huge! This release fixes all known issues. All functionality/features have been thoroughly tested on every major database platform (Oracle, DB2, PostgreSql, Mysql, SQL Server, HSQL, H2, and Derby).</p>
<p>This release features more than a dozen new examples, that show how to do just about everything that’s possible with a database. Everything from handling blobs to working with transactions. This release also adds support for stored procedures, and dealing with multiple results.</p>
<p><a title="EJP vs. JPA" href="http://easierjava.wordpress.com/2011/11/22/easy-java-persistence-ejp-vs-hibernatejpa-ejp-is-a-whole-lot-faster/"><strong>Performance comparison EJP vs. JPA</strong></a></p>
<p><strong>EVERYTHING&#8217;s AT:</strong> <a title="www.easierjava.com" href="http://www.easierjava.com">http://www.easierjava.com</a></p>
<p>C O N T E N T S<br />
<a href="#overview">Overview</a><br />
<a href="#ejpDatabaseManager">EJP Database Manager</a><br />
<a href="#insertingUpdating">Inserting And Updating</a><br />
<a href="#queries">Queries</a><br />
<a href="#ejpDatabase">EJP Database</a><br />
<a href="#storedProcedures">Stored Procedures</a><br />
<a href="#transactions">Transactions</a><br />
&nbsp;</p>
<p><strong>NOTE</strong>: The following examples use the class definitions: <a title="Customer.java" href="http://www.easierjava.com/downloads/ejp/examples/Customer.java">Customer.java</a>, <a title="Order.java" href="http://www.easierjava.com/downloads/ejp/examples/Order.java">Order.java</a>, <a title="Support.java" href="http://www.easierjava.com/downloads/ejp/examples/Support.java">Support.java</a>, and the SQL create statements in <a title="CreateDatabase.java" href="http://www.easierjava.com/downloads/ejp/examples/CreateDatabase.java">CreateDatabase.java</a></p>
<p><a name="overview"></a></p>
<h3>Overview</h3>
<p>Easy Java Persistence (EJP) is a configuration and annotation free Java persistence Framework that allows you to use normal (true) POJO classes to interact with your database.</p>
<p>EJP is an A-O/RM (automatic object/relational mapping) persistence framework. Any class can be mapped to data returned from queries provided it has methods that can be matched to columns in the result data. And any class that can be matched to a table in your database can be mapped, saved (insert), and persisted, allowing for more saves (updates). Objects don&#8217;t belong to any EJP instance, and they never expire.</p>
<p>ejp.DatabaseManager is the starting point with EJP. ejp.DatabaseManager wraps functionality from ejp.Database and ejp.Result to provide simple one-line of code methods to most of EJP&#8217;s functionality. ejp.Databasemanager is the highest and easiest level of EJP, while ejp.Database and ejp.Result are the next highest level, and are also very easy to work with.</p>
<p>ejp.DatabaseManager is thread safe when connection pooling is in use. ejp.Database is also thread safe when connection pooling is used, and you make sure to use one ejp.Database (dbm.getDatabase()) instance per thread.</p>
<p>EJP also manages all associations automatically with collections (automatically lazy loaded), arrays, and single instance objects.</p>
<p>EJP is also a JDBC toolbox. EJP provides you the ability to do anything you can do with JDBC and makes it a whole lot easier. You can perform simple and complex queries, EJP allows for simple statements (executeQuery/executeUpdate) and/or prepared statements (parameterizedquery/parameterizedUpdate). You can call stored procedures and handle multiple results.</p>
<p><a name="ejpDatabaseManager"></a></p>
<h3>ejp.DatabaseManager</h3>
<p>The main difference between ejp.DatabaseManager and ejp.Database is that ejp.DatabaseManager returns objects and collections from queries, while ejp.Database returns ejp.Result (a database cursor) from queries.</p>
<p>ejp.Result is a bidirectional database cursor (wraps java.sql.ResultSet), and can be used to iterate trough huge query result sets. ejp.Result also implements ListIterator and Iterable, so you can use next() and previous(), and you can use ejp.Result in a foreach statement. next() and previous() return newly created instances of whatever class is associated with the ejp.Result instance. Since ejp.Result is a database resource, it needs to be closed as soon as you are done with it. All ejp.Results are closed automatically when closing ejp.Database.</p>
<p>There are multiple ways to obtain an ejp.DatabaseManager. You can define the following:</p>
<pre>&lt;databases&gt;
    &lt;database name="" poolSize="" useJndi="" driver="" url="" username=""
                 password="" catalogPattern="" schemaPattern="" /&gt;
&lt;/databases&gt;</pre>
<p>in a file named &#8220;databases.xml&#8221; that&#8217;s locatable in your classpath. You can call one of ejp.DatabaseManagers&#8217;s getDatabaseManager() methods, or you can simply create a new instance of ejp.DatabaseManager.</p>
<p>ejp.DatabaseManager excepts a name from the databases.xml file, a javax.sql.DataSource, a JNDI resource name, or driver and url information.</p>
<p><strong>Examples:</strong></p>
<pre>static DatabaseManager getTheDatabaseManager()
  {
    // return DatabaseManager.getDatabaseManager("nameFromDatabase.xml");
    // return DatabaseManager.getDatabaseManager("name", poolSize, dataSource);
    // return DatabaseManager.getDatabaseManager("name", poolSize, jndiUrl);
    // return DatabaseManager.getDatabaseManager("name", poolSize, "driver", "url", "user", "passwd");

    // Returns a databases.xml defined database for HSQLDB
    return <strong>DatabaseManager.getDatabaseManager</strong>("ejp_hsql");
  }</pre>
<p><a name="insertingUpdating"></a></p>
<h3>Inserting and Updating</h3>
<p>Inserting and updating objects, with both ejpDatabaseManager and ejp.Database, is done with saveObject(). SaveObject() always knows weather it&#8217;s an insert or an update, so there&#8217;s only one method for saving. You can also use executeUpdate() and parameterizedUpdate(), if you want to do it with plain SQL.</p>
<p><strong>Examples:</strong></p>
<pre>static void insertingAndUpdatingObjects(DatabaseManager dbm) throws DatabaseException
  {
    Customer customer = new Customer("jjohnson", "mypasswd5", "John", "Johnson", "ABCProducts", "jjohnson@abcproducts.com");
    customer.getOrders().add(new Order("NFL Denver Broncos Coffee Cup", 100, 1.00, "unverified"));

    <strong>dbm.saveObject</strong>(customer);

    customer = new Customer("ssmith", "mypasswd", "Scott", "Smith", "ABCProducts", "ssmith@abcproducts.com");
    customer.getOrders().add(new Order("NFL Seattle Seahawks Team T-Shirts", 150, 12.00, "unverified"));

    <strong>dbm.saveObject</strong>(customer);

    customer.setCompanyName("ACB Products");
    customer.getOrders().add(new Order("NFL Greenbay Packers Team T-Shirts", 150, 12.00, "verified"));

    <strong>dbm.saveObject</strong>(customer);

    // the old fashion way
    <strong>dbm.parameterizedUpdate</strong>("insert into customers (customer_id, password, first_name, last_name, company_name, email) values(?,?,?,?,?,?)",
                            "jstevens", "mypasswd5", "John", "Stevens", "ABCProducts", "jstevens@abcproducts.com");

    <strong>dbm.parameterizedUpdate</strong>("insert into orders (customer_id, product, quantity, price, status) values(?,?,?,?,?)",
                            "jstevens", "NFL Dallas Cowboys Coffee Cup", 100, 1.00, "unverified");
  }</pre>
<p><a name="queries"></a></p>
<h3>Queries</h3>
<p>Retrieving data from your database is done with loadObject() for a single object, and loadObjects() for a collection. You can also use executeQuery(), and parameterizedQuery().</p>
<p><strong>Examples:</strong></p>
<pre>static void databaseManagerQueries(DatabaseManager dbm) throws DatabaseException
  {
    Customer customer = <strong>dbm.loadObject</strong>(new Customer("jjohnson"));
    System.out.println(customer);

    customer = <strong>dbm.loadObject</strong>(Customer.class, "where customer_id = ?", "jjohnson");
    System.out.println(customer);

    for (Customer c : <strong>dbm.loadObjects</strong>(new ArrayList&lt;Customer&gt;(), Customer.class))
      System.out.println(c);

    Collection&lt;Customer&gt; customers = <strong>dbm.loadObjects</strong>(new ArrayList&lt;Customer&gt;(), Customer.class,
            "from customers c, orders o where c.customer_id = o.customer_id and o.status = ?", "verified");

    for (Customer c : customers)
      System.out.println(c);

    customers = <strong>dbm.executeQuery</strong>(new ArrayList&lt;Customer&gt;(), Customer.class,
            "select * from customers");

    for (Customer c : customers)
      System.out.println(c);

    customers = <strong>dbm.parameterizedQuery</strong>(new ArrayList&lt;Customer&gt;(), Customer.class,
            "select c.* from customers c, orders o where c.customer_id = o.customer_id and o.status = ?", "verified");

    for (Customer c : customers)
      System.out.println(c);
  }</pre>
<p><a name="ejpDatabase"></a></p>
<h3>ejp.Database</h3>
<p>As mentioned above, ejp.Database and ejp.DatabaseManager have similar functionality, but ejp.Database returns ejp.Result (a database cursor) from queries.</p>
<p>As mentioned ejp.Result is a bidirectional database cursor. ejp.Result implements ListIterator and Iterable, so you can use next() and previous(), and you can use it in a foreach statement. next() and previous() return newly created instances of whatever class is associated with the ejp.Result instance. Since ejp.Result is a database resource, it needs to be closed as soon as you are done with it. All ejp.Results are closed automatically when closing ejp.Database.</p>
<p>ejp.Database also supports stored procedures and multiple result sets.</p>
<p><strong>Examples:</strong></p>
<pre>static void theEjpDatabaseWay(DatabaseManager dbm) throws DatabaseException
  {
    Database db = dbm.getDatabase();

    try
      {
        // Optional - makes rows updateable
        // db.setResultSetConcurrency(ResultSet.CONCUR_UPDATABLE);
        // db.setResultSetType(ResultSet.TYPE_SCROLL_SENSITIVE);

        Result&lt;Customer&gt; result = <strong>db.queryObject</strong>(new Customer("jjohnson"));

        if (<strong>result.hasNext</strong>())
          {
            Customer customer = result.next();

            customer.setPassword("newPasswd");
            <strong>db.saveObject</strong>(customer);
            // or we could just update the column
            // result.setColumnValue("password", "newPasswd");
            // result.updateRow();
          }

        result = <strong>db.queryObject</strong>(Customer.class);

        for (Customer c : result)
          System.out.println(c);
      }
    finally
      {
        // Always close as soon as possible when connection pooled
        <strong>db.close</strong>();
      }
  }</pre>
<p><a name="storedProcedures"></a></p>
<h3>Stored Procedures</h3>
<p>EJP even makes working with stored procedures and functions easy to handle. Simply use the JDBC stored procedure syntax:</p>
<pre>      {[?=] call storedProcedure(?,?[,?])}</pre>
<p>and one or more of InParameter, OutParameter, and InOutParameter. storedprocedure() returns a Result that may have one or more results and/or update counts that can be accessed with getMoreResults(), isUpdateCount(), getUpdateCount().</p>
<p>When done, you can access the out parameters by retrieving the CallableStatement with getStatement().</p>
<p><strong>Examples:</strong></p>
<pre>static void storedProcedures(DatabaseManager dbm) throws DatabaseException, SQLException
  {
    Database db = dbm.getDatabase();

    try
      {
        Result result = <strong>db.storedProcedure</strong>("{call getCustomerOrdersAndSupport(?,?)}",
                                           new InParameter(1, "deisenhower"),
                                           new OutParameter(2, Types.DOUBLE, 2));

        // Map orders from the orders cursor
        for (Order order : (Result&lt;Order&gt;)<strong>result.getResultSetWithClass</strong>(Order.class))
          {
            order.setStatus("verified");
            db.saveObject(order);

            System.out.println(order);
          }

        <strong>result.getMoreResults</strong>();

        // Map support from the support cursor
        for (Support s : (Result&lt;Support&gt;)<strong>result.getResultSetWithClass</strong>(Support.class))
          System.out.println(s);

        System.out.println("Order total: " + ((CallableStatement)<strong>result.getStatement</strong>()).getDouble(2));
      }
    finally { db.close(); }
  }</pre>
<p><a name="transactions"></a></p>
<h3>Transactions</h3>
<p>With ejp.DatabaseManager, saveObject() is always enclosed in a transaction. The object being saved, and its associations, are all inclosed in the transaction.</p>
<p>With ejp.Database, transactions are automatic when auto commit is true (the default state). Otherwise, saveObject(), executeUpdate(), and parameterizedUpdated() will all be enclosed in the transaction that was started when auto commit became false (beginTransaction()).</p>
<p>When you need more transaction control you can use ejp.TransactionManager or you can use ejp.Database&#8217;s beginTransaction(), commit(), rollback(), setSavepoint(), and endTransaction().</p>
<p>When using ejp.TransactionManager, you have to use ejp.TransactionManager&#8217;s methods saveObject(), commit(), rollback(), setSavepoint(). You can also get the handle to the ejp.Database that is being used with getDatabase().</p>
<p><strong>Examples:</strong></p>
<pre>static void transactions(DatabaseManager dbm) throws DatabaseException
  {
    new <strong>TransactionManager</strong>(dbm)
      {
        public void run()
          {
            // do your work
            // ...
          }
      }.<strong>executeTransaction</strong>();

    // or
    Database db = dbm.getDatabase();

    try
      {
        <strong>db.beginTransaction</strong>();
        // do your work
        <strong>db.endTransaction</strong>();
      }
    finally { db.close(); }
  }</pre>
<p>Obviously, we&#8217;re just touching upon the functionality and all the things you can do with EJP, but the above is the majority of what you would do from day to day and project to project.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=168&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/12/19/easy-java-persistence-and-jdbc-toolbox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence (EJP) 3.5 Released &#8211; It&#8217;s Huge!</title>
		<link>http://easierjava.wordpress.com/2011/12/18/easy-java-persistence-ejp-3-5-released-its-huge/</link>
		<comments>http://easierjava.wordpress.com/2011/12/18/easy-java-persistence-ejp-3-5-released-its-huge/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 06:51:54 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=159</guid>
		<description><![CDATA[Easy Java Persistence (EJP) 3.5 has been released, and it is huge! This release fixes all known issues. All functionality/features have been thoroughly tested on every major database platform (Oracle, DB2, PostgreSql, Mysql, SQL Server, HSQL, H2, and Derby). This &#8230; <a href="http://easierjava.wordpress.com/2011/12/18/easy-java-persistence-ejp-3-5-released-its-huge/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=159&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Easy Java Persistence (EJP) 3.5 has been released, and it is huge! This release fixes all known issues. All functionality/features have been thoroughly tested on every major database platform (Oracle, DB2, PostgreSql, Mysql, SQL Server, HSQL, H2, and Derby).</p>
<p>This release features more than a dozen new examples, that show how to do just about everything that&#8217;s possible with a database. Everything from handling blobs to working with transactions. This release also adds support for stored procedures, and dealing with multiple results.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=159&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/12/18/easy-java-persistence-ejp-3-5-released-its-huge/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence (EJP) 3.2 Released with Support for Stored Procedures</title>
		<link>http://easierjava.wordpress.com/2011/12/05/easy-java-persistence-ejp-3-2-released-with-support-for-stored-procedures/</link>
		<comments>http://easierjava.wordpress.com/2011/12/05/easy-java-persistence-ejp-3-2-released-with-support-for-stored-procedures/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 19:07:47 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=150</guid>
		<description><![CDATA[Fixed a bug where metadata was leaking through uninitialized under heavy multi-threaded loads. Also added support for stored procedures. See StoredProcedureExample.java.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=150&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Fixed a bug where metadata was leaking through uninitialized under heavy multi-threaded loads. Also added support for stored procedures. See StoredProcedureExample.java.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/150/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=150&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/12/05/easy-java-persistence-ejp-3-2-released-with-support-for-stored-procedures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence (EJP) 3.0 (Lazy Loading and Batch Updates)</title>
		<link>http://easierjava.wordpress.com/2011/11/29/easy-java-persistence-ejp-3-0-lazy-loading-and-batch-updates/</link>
		<comments>http://easierjava.wordpress.com/2011/11/29/easy-java-persistence-ejp-3-0-lazy-loading-and-batch-updates/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 09:21:23 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>
		<category><![CDATA[Press]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=129</guid>
		<description><![CDATA[Easy Java Persistence (EJP) 3.0 has been released. This is a major release! This versions main feature implementations are batch updating performance enhancements, and lazy loading of collection based associations.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=129&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Easy Java Persistence (EJP) 3.0 has been released.  This is a major release!  This versions main feature implementations are batch updating performance enhancements, and lazy loading of collection based associations.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=129&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/11/29/easy-java-persistence-ejp-3-0-lazy-loading-and-batch-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Persistence (EJP) Vs. Hibernate/JPA &#8212; EJP Is A Whole Lot Faster</title>
		<link>http://easierjava.wordpress.com/2011/11/22/easy-java-persistence-ejp-vs-hibernatejpa-ejp-is-a-whole-lot-faster/</link>
		<comments>http://easierjava.wordpress.com/2011/11/22/easy-java-persistence-ejp-vs-hibernatejpa-ejp-is-a-whole-lot-faster/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 05:33:19 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=111</guid>
		<description><![CDATA[The following has been updated with HSQL database results. The following table shows a comparison between Easy Java Persistence (EJP) and Hibernate/JPA. I used Hibernate/JPA in the comparison as it is pretty well the most used JPA implementation, and it &#8230; <a href="http://easierjava.wordpress.com/2011/11/22/easy-java-persistence-ejp-vs-hibernatejpa-ejp-is-a-whole-lot-faster/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=111&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The following has been updated with HSQL database results.</p>
<p>The following table shows a comparison between Easy Java Persistence (EJP) and Hibernate/JPA.  I used Hibernate/JPA in the comparison as it is pretty well the most used JPA implementation, and it has been compared against the other JPA implementations and came out on top (see <a href="http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html" rel="nofollow">http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html</a>).</p>
<p>The EJP vs. Hibernate/JPA test is a simple program that inserts a specified number of customer objects, along with a single association for a specified number of customer orders.  The test compares inserts, updates (with inserts), finds and queries (along with object loading). You can download the test application at <a href="http://www.easierjava.com">www.easierjava.com</a>.</p>
<p>The hardware:</p>
<ul>
<li>Dell Inspiron 1764 with Intel Core i5 M 430 @ 2.27 Ghz and 2.27 Ghz</li>
</ul>
<p>The software:</p>
<ul>
<li>Java 1.6.0_22-b04 64-Bit</li>
<li>Easy Java Persistence (EJP) 3.5</li>
<li>HSQLDB 2.2.6</li>
<li>Hibernate 4.0.0.CR4</li>
</ul>
<p>The result (with 275,000 inserts) as can be seen below, is EJP is significantly faster than Hibernate/JPA.  To sum it up:</p>
<ul>
<li>EJP is up to 8.6 times faster with inserts.</li>
<li>EJP is up to 4.6 times faster with updates.</li>
<li>EJP is up to 2.9 times faster with Finds/Loads.</li>
<li>EJP is up to 2.7 times faster with Queries/Loads.</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0" style="font-size:11px;">
<tbody>
<tr>
<td colspan="5" align="center"><b>Inserting and Updating typical Customers and Orders</b></td>
</tr>
<tr>
<td>10/100</td>
<td>Inserts (11,000)</td>
<td>Updates (10,000)</td>
<td>Find (11,000)</td>
<td>Query (11,000)</td>
</tr>
<tr>
<td>EJP</td>
<td>3.11 seconds</td>
<td>0.73 seconds</td>
<td>0.81 seconds</td>
<td>0.45 seconds</td>
</tr>
<tr>
<td>JPA</td>
<td>9.21 seconds</td>
<td>2.12 seconds</td>
<td>2.50 seconds</td>
<td>1.27 seconds</td>
</tr>
<tr>
<td colspan="5" height="10"></td>
</tr>
<tr>
<td>50/100</td>
<td>Inserts (55,000)</td>
<td>Updates (50,000)</td>
<td>Find (55,000)</td>
<td>Query (55,000)</td>
</tr>
<tr>
<td>EJP</td>
<td>6.95 seconds</td>
<td>2.13 seconds</td>
<td>2.78 seconds</td>
<td>1.52 seconds</td>
</tr>
<tr>
<td>JPA</td>
<td>40.50 seconds</td>
<td>8.72 seconds</td>
<td>7.67 seconds</td>
<td>4.75 seconds</td>
</tr>
<tr>
<td colspan="5" height="10"></td>
</tr>
<tr>
<td>50/500</td>
<td>Inserts (275,000)</td>
<td>Updates (250,000)</td>
<td>Find (275,000)</td>
<td>Query (275,000)</td>
</tr>
<tr>
<td>EJP</td>
<td>22.01 seconds</td>
<td>9.10 seconds</td>
<td>9.93 seconds</td>
<td>8.06 seconds</td>
</tr>
<tr>
<td>JPA</td>
<td>190.04 seconds</td>
<td>41.93 seconds</td>
<td>29.13 seconds</td>
<td>21.85 seconds</td>
</tr>
</tbody>
</table>
<p>Given that comparisons show Hibernate/JPA is the fastest JPA implementation, that makes EJP faster than any JPA implementation.</p>
<p>EJPs goal is to remain annotation and configuration free, and EJP will handle any thing you may want to do with your database.  Given its &lt; 400k JAR file size, we can definitely say it&#8217;s a far more lightweight persistence framework.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=111&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/11/22/easy-java-persistence-ejp-vs-hibernatejpa-ejp-is-a-whole-lot-faster/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easier Java Persistence (EJP) 2.9 Released</title>
		<link>http://easierjava.wordpress.com/2011/11/22/easier-java-persistence-ejp-2-9-released/</link>
		<comments>http://easierjava.wordpress.com/2011/11/22/easier-java-persistence-ejp-2-9-released/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 23:34:36 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJP]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=108</guid>
		<description><![CDATA[Fixed a problem where extra column (select as) information wasn&#8217;t seen during object loading. Reworked object loading for 40% faster loads. Now faster across the board than JPA.  Will have an entry about this in a short while.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=108&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Fixed a problem where extra column (select as) information wasn&#8217;t seen during object loading. Reworked object loading for 40% faster loads. Now faster across the board than JPA.  Will have an entry about this in a short while.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=108&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/11/22/easier-java-persistence-ejp-2-9-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Java Websites (EJW) &#8211; Makes Java Web Development Simple</title>
		<link>http://easierjava.wordpress.com/2011/11/07/easy-java-websites-ejw-makes-java-web-development-simple/</link>
		<comments>http://easierjava.wordpress.com/2011/11/07/easy-java-websites-ejw-makes-java-web-development-simple/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 06:53:58 +0000</pubDate>
		<dc:creator>easierjava</dc:creator>
				<category><![CDATA[EJW]]></category>
		<category><![CDATA[Press]]></category>

		<guid isPermaLink="false">http://easierjava.wordpress.com/?p=96</guid>
		<description><![CDATA[FOR IMMEDIATE RELEASE: Easy Java Websites (EJW) &#8211; Makes Java Web Development Simple Phoenix, Arizona/USA &#8211; November 8, 2011 &#8211; The folks at EasierJava.com explain that Easy Java Websites (EJW for short) makes dealing with web site development in Java &#8230; <a href="http://easierjava.wordpress.com/2011/11/07/easy-java-websites-ejw-makes-java-web-development-simple/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=96&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>FOR IMMEDIATE RELEASE:</strong></p>
<p><strong>Easy Java Websites (EJW) &#8211; Makes Java Web Development Simple</strong></p>
<p>Phoenix, Arizona/USA &#8211; November 8, 2011 &#8211; The folks at EasierJava.com explain that Easy Java Websites (EJW for short) makes dealing with web site development in Java a whole lot easier.</p>
<p>EJW is a powerful and easy to use model-view-controller web development framework for Java. EJW&#8217;s main features include:</p>
<ul>
<li>similar functionality to other web frameworks (only easier)</li>
<li>performance is equal to or better then any other web framework</li>
<li>a footprint a fraction the size of any other (&lt; 300k)</li>
<li>extremely small learning curve (learn in minutes)</li>
<li>no tag libraries, annotations, or configuration (and there&#8217;s no need)</li>
<li>regular HTML and Form tags</li>
<li>commercially supported software</li>
<li>and a lot more (see features)</li>
</ul>
<p>EJW is a Java servlet-based model-view-controller web development framework that is designed for extreme ease-of-use. In fact, we would dare to say EJW is the easiest framework available, and yet it still has all the abilities and functionality of any other framework, Java and non Java. Best of all, it can actually be learned in a matter of minutes; there is no huge learning curve.</p>
<p>EJW is this easy (no annotations or configuration):</p>
<pre>    public class HelloWorld extends RequestHandler
      {
        public String hello()
          {
            getServerInterface().addViewObject("helloWorld", "Hello World");

            return "/WEB-INF/helloWorld.jsp";
          }
      }</pre>
<p>Calling the above is this simple:</p>
<pre> 

http://host/context/helloWorld/hello</pre>
<p>EasierJava.com is a dabuTech Corporation division that specializes in simpler Java APIs.</p>
<p>Contact:</p>
<p>David Bulmore</p>
<p>dabuTech Corporation</p>
<p>623-476-2797</p>
<p><a href="mailto:daveb@dabutech.com">daveb@dabutech.com</a></p>
<p><strong>###</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/easierjava.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/easierjava.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=easierjava.wordpress.com&#038;blog=7290706&#038;post=96&#038;subd=easierjava&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://easierjava.wordpress.com/2011/11/07/easy-java-websites-ejw-makes-java-web-development-simple/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eb0f2b3b4f4d718a4821b72ee406287a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">easierjava</media:title>
		</media:content>
	</item>
	</channel>
</rss>
