Reference
http://code.google.com/p/tapestry5examples/downloads/detail?name=folderTap5_1_0_2-src.jar&can=2&q=
Tapestry Hibernate
AppModule.java
package com.dash.tapestryiocdao.services;
import java.io.IOException;
import org.apache.tapestry5.*;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.OrderedConfiguration;
import org.apache.tapestry5.ioc.ServiceBinder;
import org.apache.tapestry5.ioc.annotations.Local;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.RequestFilter;
import org.apache.tapestry5.services.RequestHandler;
import org.apache.tapestry5.services.Response;
import org.slf4j.Logger;
import com.dash.tapestryiocdao.dao.*;
import org.apache.tapestry5.ioc.annotations.InjectService;
import org.apache.tapestry5.hibernate.HibernateSessionManager;
/**
* This module is automatically included as part of the Tapestry IoC
Registry, it's a good place to
* configure and extend Tapestry, or to place your own service definitions.
*/
public class AppModule
{
public static void bind(ServiceBinder binder)
{
// binder.bind(MyServiceInterface.class, MyServiceImpl.class);
// Make bind() calls on the binder object to define most IoC
services.
// Use service builder methods (example below) when the
implementation
// is provided inline, or requires more initialization than simply
// invoking the constructor.
}
public static void contributeApplicationDefaults(
MappedConfiguration<String, String> configuration)
{
// Contributions to ApplicationDefaults will override any
contributions to
// FactoryDefaults (with the same key). Here we're restricting the
supported
// locales to just "en" (English). As you add localised message
catalogs and other assets,
// you can extend this list of locales (it's a comma separated
series of locale names;
// the first locale name is the default when there's no reasonable
match).
configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
// The factory default is true but during the early stages of an
application
// overriding to false is a good idea. In addition, this is often
overridden
// on the command line as -Dtapestry.production-mode=false
configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
// The application version number is incorprated into URLs for some
// assets. Web browsers will cache assets because of the far future
expires
// header. If existing assets are changed, the version number should
also
// change, to force the browser to download new versions.
configuration.add(SymbolConstants.APPLICATION_VERSION,
"1.0-SNAPSHOT");
}
/**
* This is a service definition, the service will be named
"TimingFilter". The interface,
* RequestFilter, is used within the RequestHandler service pipeline,
which is built from the
* RequestHandler service configuration. Tapestry IoC is responsible for
passing in an
* appropriate Logger instance. Requests for static resources are
handled at a higher level, so
* this filter will only be invoked for Tapestry related requests.
*
* <p>
* Service builder methods are useful when the implementation is inline
as an inner class
* (as here) or require some other kind of special initialization. In
most cases,
* use the static bind() method instead.
*
* <p>
* If this method was named "build", then the service id would be taken
from the
* service interface and would be "RequestFilter". Since Tapestry
already defines
* a service named "RequestFilter" we use an explicit service id that we
can reference
* inside the contribution method.
*/
public RequestFilter buildTimingFilter(final Logger log)
{
return new RequestFilter()
{
public boolean service(Request request, Response response,
RequestHandler handler)
throws IOException
{
long startTime = System.currentTimeMillis();
try
{
// The responsibility of a filter is to invoke the
corresponding method
// in the handler. When you chain multiple filters
together, each filter
// received a handler that is a bridge to the next
filter.
return handler.service(request, response);
}
finally
{
long elapsed = System.currentTimeMillis() - startTime;
log.info(String.format("Request time: %d ms", elapsed));
}
}
};
}
/**
* This is a contribution to the RequestHandler service configuration.
This is how we extend
* Tapestry using the timing filter. A common use for this kind of
filter is transaction
* management or security. The @Local annotation selects the desired
service by type, but only
* from the same module. Without @Local, there would be an error due to
the other service(s)
* that implement RequestFilter (defined in other modules).
*/
public void contributeRequestHandler(OrderedConfiguration<RequestFilter>
configuration,
@Local
RequestFilter filter)
{
// Each contribution to an ordered configuration has a name, When
necessary, you may
// set constraints to precisely control the invocation order of the
contributed filter
// within the pipeline.
configuration.add("Timing", filter);
}
// Hibernate DAO
public static TbEmployeesDAO buildTbEmployeesDAO(
@InjectService("HibernateSessionManager") HibernateSessionManager
sessionManager)
{
TbEmployeesDAOHibernate dao = new TbEmployeesDAOHibernate();
dao.setSessionManager(sessionManager);
return dao;
}
}
TbEmployeesDAO.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.dash.tapestryiocdao.dao;
import com.dash.tapestryiocdao.hb.*;
import java.util.List;
/**
*
* @author alan
*/
public interface TbEmployeesDAO {
List<TbEmployees> getIdcode();
public void commit();
}
TbEmployeesDAOHibernate
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.dash.tapestryiocdao.dao;
import com.dash.tapestryiocdao.hb.TbEmployees;
import java.util.List;
import org.apache.tapestry5.hibernate.HibernateSessionManager;
import org.hibernate.Criteria;
import org.hibernate.Session;
/**
*
* @author alan
*/
public class TbEmployeesDAOHibernate implements TbEmployeesDAO
{
private HibernateSessionManager sessionMananger;
public HibernateSessionManager getSessionManager() {
return sessionMananger;
}
public void setSessionManager(HibernateSessionManager manager) {
sessionMananger = manager;
}
public void commit() {
getSessionManager().commit();
}
// DAO
public List<TbEmployees> getIdcode(){
Session session = getSessionManager().getSession();
Criteria crit = session.createCriteria(TbEmployees.class);
return crit.list();
}
}
Index.tml
<html t:type="layout" title="TapestryiocDAO Index"
t:sidebarTitle="Current Time"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">
<!-- Most of the page content, including <head>, <body>, etc. tags,
comes from Layout.tml -->
<p>${message:greeting}</p>
<p:sidebar>
<p>
<t:grid source="List" />
</p>
<p>The current time is: ${currentTime}.</p>
<p>
[<t:pagelink page="Index">refresh</t:pagelink>]
</p>
</p:sidebar>
</html>
Index.java
package com.dash.tapestryiocdao.pages;
import com.dash.tapestryiocdao.dao.TbEmployeesDAO;
import com.dash.tapestryiocdao.hb.TbEmployees;
import java.util.Date;
import java.util.List;
import org.apache.tapestry5.ioc.annotations.Inject;
/**
* Start page of application TapestryiocDAO.
*/
public class Index
{
@Inject
private TbEmployeesDAO tbemployeesdao;
public Date getCurrentTime()
{
return new Date();
}
public List<TbEmployees> getList(){
return tbemployeesdao.getIdcode();
}
}
Tapestry is very POWERFUL :)
--
View this message in context:
http://tapestry.1045711.n5.nabble.com/T5-Working-Tapestry-Hibernate-with-DAO-tp3229905p3229905.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]