001// Licensed under the Apache License, Version 2.0 (the "License"); 002// you may not use this file except in compliance with the License. 003// You may obtain a copy of the License at 004// 005// http://www.apache.org/licenses/LICENSE-2.0 006// 007// Unless required by applicable law or agreed to in writing, software 008// distributed under the License is distributed on an "AS IS" BASIS, 009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 010// See the License for the specific language governing permissions and 011// limitations under the License. 012 013package org.apache.tapestry5.hibernate; 014 015import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration; 016import org.hibernate.Session; 017import org.hibernate.SessionFactory; 018import org.hibernate.cfg.Configuration; 019 020/** 021 * Responsible for creating a Hibernate session as needed. Internally, is responsible for Hibernate {@link 022 * Configuration}, resulting in a {@link SessionFactory}. 023 * 024 * The service's configuration is a {@linkplain org.apache.tapestry5.ioc.services.ChainBuilder chain of command} of 025 * configurator objects. 026 */ 027@UsesOrderedConfiguration(HibernateConfigurer.class) 028public interface HibernateSessionSource 029{ 030 /** 031 * Creates a new session using the {@link #getSessionFactory() SessionFactory} created at service startup. 032 */ 033 Session create(); 034 035 /** 036 * Returns the SessionFactory from which Hibernate sessions are created. 037 */ 038 SessionFactory getSessionFactory(); 039 040 /** 041 * Returns the final configuration used to create the {@link SessionFactory}. The configuration is immutable. 042 */ 043 Configuration getConfiguration(); 044}