openSession()和getCurrentSession()有什么不同?
利用Hibernate进行记录插入的代码:流行的主流写法和Hibernate官方文档里的写法哪个更好?
利用Hibernate进行记录插入的代码:流行的主流写法和Hibernate官方文档里的写法哪个更好?
解决方案 »
- getHibernateTemplate().getSessionFactory().openSession().createSQLQuery(strSql)
- JPA分页的问题?感觉效率不行
- javaEE servlet分页报错
- java 如何生成声音文件?
- 关于BASE64Decoder加密的问题,高手进。。。。
- 如何写WebService
- JBoss seam 建立项目,导入到eclipse后,发布问题
- 启动jboss报错看样子无法解析xsd的网址,不知道为什么
- 我的tomcat5.0.29的访问日怎么没有啊?
- jsp在tomcat运行的问题
- [求助]ant telnet read性能问题
- 最简单的注册,不知道是不是spring没有注入,一直出现空指针~~~
getCurrentSession先找池内有没有 有 就用 没有 在创建。。getCurrentSession
主流写法 交给orm层来管理 eg: hibernate 中 继承 hibernateSupport 用this.getHiberanteTempelte
得到session比较好了..
Configuration cfg = new AnnotationConfiguration();
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.getCurrentSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
sf.close();官方的好像比较复杂(我没有修改过):
package org.hibernate.tutorial.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
package org.hibernate.tutorial;
import org.hibernate.Session;
import java.util.*;
import org.hibernate.tutorial.domain.Event;
import org.hibernate.tutorial.util.HibernateUtil;
public class EventManager {
public static void main(String[] args) {
EventManager mgr = new EventManager();
if (args[0].equals("store")) {
mgr.createAndStoreEvent("My Event", new Date());
}
HibernateUtil.getSessionFactory().close();
}
private void createAndStoreEvent(String title, Date theDate) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Event theEvent = new Event();
theEvent.setTitle(title);
theEvent.setDate(theDate);
session.save(theEvent);
session.getTransaction().commit();
}
}
管方的是把sessionFactory放在静态区域内.这样不管用多少次都只需建一个.