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: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org