Version: hibernate_core 3.3.2
Use SF. opensession ();
But now getcurrentsession () is popular. The reason is very simple. opensession () re-starts a session regardless of the situation, while getcurrentsession () adds a judgment, when there is a session, it will be called directly. If there is no session, it will be created. The benefits are obvious!
Error message I met
Java code :{
DP. Sh. toolbar. copytoclipboard (this); Return false;
} "Href =" # ">
- Org. hibernate. hibernateexception: No currentsessioncontext configured!
- At org. hibernate. impl. sessionfactoryimpl. getcurrentsession (sessionfactoryimpl. Java: 620)
- At com. hibernate. Test. hibernatetest. testsave01 (hibernatetest. Java: 23)
- At sun. Reflect. nativemethodaccessorimpl. invoke0 (native method)
- At sun. Reflect. nativemethodaccessorimpl. Invoke (nativemethodaccessorimpl. Java: 39)
- At sun. Reflect. delegatingmethodaccessorimpl. Invoke (delegatingmethodaccessorimpl. Java: 25)
- At java. Lang. Reflect. method. Invoke (method. Java: 597)
- At org. JUnit. Runners. model. frameworkmethod $1. runreflectivecall (frameworkmethod. Java: 44)
- At org. JUnit. Internal. Runners. model. reflectivecallable. Run (reflectivecallable. Java: 15)
- At org. JUnit. Runners. model. frameworkmethod. invokeexplosively (frameworkmethod. Java: 41)
- At org. JUnit. Internal. Runners. Statements. invokemethod. Evaluate (invokemethod. Java: 20)
- At org. JUnit. Runners. blockjunit4classrunner. runchild (blockjunit4classrunner. Java: 76)
- At org. JUnit. Runners. blockjunit4classrunner. runchild (blockjunit4classrunner. Java: 50)
- At org. JUnit. Runners. parentrunner $ 3.run( parentrunner. Java: 193)
- At org. JUnit. Runners. parentrunner $1. Schedule (parentrunner. Java: 52)
- At org. JUnit. Runners. parentrunner. runchildren (parentrunner. Java: 191)
- At org. JUnit. Runners. parentrunner. Access $000 (parentrunner. Java: 42)
- At org. JUnit. Runners. parentrunner $2. Evaluate (parentrunner. Java: 184)
- At org. JUnit. Runners. parentrunner. Run (parentrunner. Java: 236)
- At org. Eclipse. jdt. Internal. junit4.runner. junit4testreference. Run (junit4testreference. Java: 46)
- At org. Eclipse. jdt. Internal. JUnit. Runner. testexecution. Run (testexecution. Java: 38)
- At org. Eclipse. jdt. Internal. JUnit. Runner. remotetestrunner. runtests (remotetestrunner. Java: 467)
- At org. Eclipse. jdt. Internal. JUnit. Runner. remotetestrunner. runtests (remotetestrunner. Java: 683)
- At org. Eclipse. jdt. Internal. JUnit. Runner. remotetestrunner. Run (remotetestrunner. Java: 390)
- At org. Eclipse. jdt. Internal. JUnit. Runner. remotetestrunner. Main (remotetestrunner. Java: 197)
org.hibernate.HibernateException: No CurrentSessionContext configured!at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:620)at com.hibernate.test.HibernateTest.testSave01(HibernateTest.java:23)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)at org.junit.runners.ParentRunner.run(ParentRunner.java:236)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Check the error message: the current sessioncontext is not configured!
Haha. I searched the internet. It turns out that
In an environment integrated with hibernate (such as JBoss), add the following to the session-factory section in hibernate. cfg. xml:
XML code :{
DP. Sh. toolbar. copytoclipboard (this); Return false;
} "Href =" # ">
- <PropertyName = "current_session_context_class">JTA</Property>
<property name="current_session_context_class">jta</property>
In an environment without hibernate integration (for example, a JDBC Independent Application), add the following to the session-factory segment in hibernate. cfg. xml:
XML code :{
DP. Sh. toolbar. copytoclipboard (this); Return false;
} "Href =" # ">
- <PropertyName = "current_session_context_class">Thread</Property>
<property name="current_session_context_class">thread</property>
Now use the getcurrentsession () method to get the session. No error is returned.