在線程中重用Hibernate會話
我已經讀過某個地方，當刷新會話或提交事務時，會話本身由Hibernate關閉。那麽，我如何在之前關閉的同一個線程中重用Hibernate
Session？
謝謝
> 
> 我已經讀過某個地方，當刷新會話或提交事務時，會話本身由Hibernate關閉。
> 
> 
> 
`flush` 不關閉會話。但是，從Hibernate
3.1開始，如果將 `current_session_context_class` 配置為“
`thread` ”或“`”，` commit 將關閉會話 jta
“，或者如果您使用 `TransactionManagerLookup` （強制JTA）和
`getCurrentSession（）` 。
以下代碼說明了這一點（此處 `current_session_context_class` 設置為
`thead` ）：
```
Session session = factory.getCurrentSession();
Transaction tx = session.beginTransaction();
Product p = new Product();
session.persist(p);
session.flush();
System.out.println(session.isOpen());//prints true
p.setName("foo");
session.merge(p);
tx.commit();
System.out.println(session.isOpen());//prints false
```
See this thread and the section 2.5. Contextual sessions in the documentation
for background on this.
> 
> 那麽，我如何在之前關閉的同一個線程中重用Hibernate Session？
> 
> 
> 
使用內置的“`托管`”策略（將
`current_session_context_class`
屬性設置為`托管`）或使用自定義 `CurrentSessionContext`
派生自 `ThreadLocalSessionContext` 並覆蓋
`ThreadLocalSessionContet.isAutoCloseEnabled（）`
。
Again, see the above links and also What about the extended Session pattern for long
Conversations?
很可能是的。根據第一和第二文件中的流格式和使用的編解碼器，可以在重新編碼或不重新編碼的情況下完成。請參閱Windows
Media Format SDK中的示例（wmvcopy，WMVRecompress）。而且您不需要使用DirectShow。