当前位置:首页>开发>正文

hibernate4.3.11怎么创建sessionfactory Hibernate的session是怎么创建的

2023-04-22 02:46:54 互联网 未知 开发

 hibernate4.3.11怎么创建sessionfactory Hibernate的session是怎么创建的

hibernate4.3.11怎么创建sessionfactory

hibernate框架随着版本的不断升级创建SessionFactory对象的方式也在不断的变化。

1、4.0之前我记得是如下这样:
Java代码
Configuration configuration = new Configuration().configure()

SessionFactory sessionFactory = configuration.buildSessionFactory()

2、4.3之前如下这样:
Java代码
Configuration configuration = new Configuration().configure()

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry()

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry)

3、4.3的新用法如下这样:
Java代码
Configuration configuration = new Configuration().configure()

StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties())

StandardServiceRegistryImpl registry = (StandardServiceRegistryImpl) builder.build()

SessionFactory sessionFactory = configuration.buildSessionFactory(registry)

Hibernate的session是怎么创建的

Hibernat 对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,
而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。
  Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取     
HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。
SessionFactory对象的创建:

Java代码
Configuration cfg = new Configuration().configure()
SessionFactory sessions = cfg.buildSessionFactory()

session创建时使用了一个ThreadLocal类来建立一个Session管理的辅助类,使用ThreadLocal可以有效隔离执行所用的数据,
避开了Session的多线程之间的数据共享问题。

//创建一个线程本地变量。

Java代码
public static final ThreadLocalthreadlocal = new ThreadLocal() public static org.hibernate.SessionFactory sessionFactory //获取session的方法 public static Sessin getSession() throws HibernateException{ //返回线程局部变量的当前线程的值 Session s = (Session)threadLocal.get() //如果sessionFactory为空,重新创建sessionFactory如果线程为空,就打开一个新的session if(session==null || !session.isOpen()){ if(sessionFactory == null){ rebuildSessionFactory() session = (sessionFactory != null) sessionFactory.openSession():null // 将hibernate的session放入到线程中保存;只要这个线程不结束,都可以通过线程的get()方法来获取 threadLocal.set(session)return session

hibernate4.1.3怎么获取sessionfactroy

需要使用SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

下面附上代码:
public class Test {
8
9 private static Configuration configuration = null
10 private static SessionFactory sessionFactory = null
11 private static ServiceRegistry serviceRegistry = null
12 public static void main(String[] args) {
13 try {
14 configuration = new Configuration().configure()
15 serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry()
16 sessionFactory = configuration.buildSessionFactory(serviceRegistry)
17 } catch (HibernateException e) {
18 e.printStackTrace()
19 }
20 }
21
22 }

hibernate4怎样创建2个sessionfactory

myeclipse创建sessionFactory需要添加hibernate的依赖。 SessionFactory 负责创建Session的实例。 可以通过Configuation实例创建SessionFactory; Configuration config=new Configuration().configure() SessionFactory sessionFactory=config...