Java 类org.hibernate.context.ManagedSessionContext 实例源码
项目:Jouve-Project
文件:EntityManagerUtils.java
public static void setUp() {
AnnotationConfiguration config = new AnnotationConfiguration();
config.setProperty("hibernate.current_session_context_class", "managed");
config.setProperty("hibernate.c3p0.max_size", "20").setProperty(
"hibernate.c3p0.timeout", "3000").setProperty(
"hibernate.c3p0.idle_test_period", "300").setProperty("hibernate.hbm2ddl.auto", "update");
ConstellioAnnotationUtils.addAnnotatedClasses(config);
sessionFactory = config.buildSessionFactory();
Application.set(new DataDummyWebApplication());
org.hibernate.classic.Session hibernateSession = sessionFactory.openSession();
hibernateSession.beginTransaction();
ManagedSessionContext.bind(hibernateSession);
}
项目:Jouve-Project
文件:EntityManagerUtils.java
public static void tearDown() {
try {
if (ManagedSessionContext.hasBind(sessionFactory)) {
EntityManager currentEntityManager = ConstellioPersistenceContext.getCurrentEntityManager();
if (currentEntityManager.isOpen()) {
try {
if (currentEntityManager.getTransaction().isActive())
currentEntityManager.getTransaction().rollback();
} finally {
currentEntityManager.close();
}
}
ManagedSessionContext.unbind(sessionFactory);
}
} finally {
if (sessionFactory != null) {
sessionFactory.close();
}
}
}
项目:t4f-data
文件:HibernateWorkManager.java
public void endWork() {
if (UnitOfWork.TRANSACTION.equals(unitOfWork))
throw new IllegalStateException("Cannot use WorkManager with UnitOfWork.TRANSACTION");
//do nothing if there is no session open
SessionFactory sessionFactory = sessionFactoryProvider.get();
if (!ManagedSessionContext.hasBind(sessionFactory))
return;
//close up session when done
try {
sessionFactory.getCurrentSession().close();
} finally {
//discard session;
ManagedSessionContext.unbind(sessionFactory);
}
}
项目:cacheonix-core
文件:SessionFactoryImpl.java
private CurrentSessionContext buildCurrentSessionContext() {
String impl = properties.getProperty( Environment.CURRENT_SESSION_CONTEXT_CLASS );
// for backward-compatability
if ( impl == null && transactionManager != null ) {
impl = "jta";
}
if ( impl == null ) {
return null;
}
else if ( "jta".equals( impl ) ) {
if ( settings.getTransactionFactory().areCallbacksLocalToHibernateTransactions() ) {
log.warn( "JTASessionContext being used with JDBCTransactionFactory; auto-flush will not operate correctly with getCurrentSession()" );
}
return new JTASessionContext( this );
}
else if ( "thread".equals( impl ) ) {
return new ThreadLocalSessionContext( this );
}
else if ( "managed".equals( impl ) ) {
return new ManagedSessionContext( this );
}
else {
try {
Class implClass = ReflectHelper.classForName( impl );
return ( CurrentSessionContext ) implClass
.getConstructor( new Class[] { SessionFactoryImplementor.class } )
.newInstance( new Object[] { this } );
}
catch( Throwable t ) {
log.error( "Unable to construct current session context [" + impl + "]", t );
return null;
}
}
}
项目:labviewer
文件:HibernateHelper.java
/**
* Close the current session and unbind it via {@link ManagedSessionContext#unbind(SessionFactory)}. The hibernate
* property "hibernate.current_session_context_class" must be set to "managed" for this to have effect. This method
* should be called from within an Interceptor or Filter type class that is setting up the scope of the Session,
* when this scope is about to expire.
*/
public void unbindAndCleanupSession() {
org.hibernate.classic.Session currentSession = ManagedSessionContext.unbind(getSessionFactory());
if (currentSession != null) {
currentSession.close();
}
}
项目:t4f-data
文件:HibernateWorkManager.java
public void beginWork() {
if (UnitOfWork.TRANSACTION.equals(unitOfWork))
throw new IllegalStateException("Cannot use WorkManager with UnitOfWork.TRANSACTION");
//do nothing if a session is already open
if (ManagedSessionContext.hasBind(sessionFactoryProvider.get()))
return;
//open session;
ManagedSessionContext.bind(sessionFactoryProvider.get().openSession());
}
项目:t4f-data
文件:ManualLocalReadOnlyTransactionsTest.java
@AfterClass
void post() {
final SessionFactory sessionFactory = injector.getInstance(SessionFactory.class);
sessionFactory.close();
ManagedSessionContext.unbind(sessionFactory);
}
项目:labviewer
文件:HibernateHelper.java
/**
* Open a hibernate session and bind it as the current session via
* {@link ManagedSessionContext#bind(org.hibernate.classic.Session)}. The hibernate property
* "hibernate.current_session_context_class" must be set to "managed" for this to have effect This method should be
* called from within an Interceptor or Filter type class that is setting up the scope of the Session. This method
* should then call {@link HibernateUtil#unbindAndCleanupSession()} when the scope of the Session is expired.
*
* @see ManagedSessionContext#bind(org.hibernate.classic.Session)
*/
public void openAndBindSession() {
SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) getSessionFactory();
org.hibernate.classic.Session currentSession = sessionFactoryImplementor.openSession(null, true, false,
ConnectionReleaseMode.AFTER_STATEMENT);
currentSession.setFlushMode(FlushMode.COMMIT);
ManagedSessionContext.bind(currentSession);
}