首页 > 代码库 > [Hibernate系列—] 2. 创建SessionFactory 与 Session
[Hibernate系列—] 2. 创建SessionFactory 与 Session
Configuration 对象创建
要创建SessionFactory , 首先要创建Configuration 对象。
这个对象就是去读取hibernate 的一些配置信息。
默认状况下, hibernate会到 classPath 目录下加载hibernate.cfg.xml 文件。
这里延续上一篇的例子:
[Hibernate系列—] 1. 下载与试用Hibernate(MySQL与Oracle 配置)
这个配置文件的方式可以有多种, 可以是xml , 可以是properties , 也可以直接在代码中写配置。
方式1. 在src 目录下放入 hibernate.cfg.xml, 类似上篇的例子
方式2. 在 src 目录下放入 hibernate.properties
内容如下:
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost:3306/test hibernate.connection.username=root hibernate.connection.password=123456 #hibernate.hbm2ddl.auto=create
可以看出, 这种方式无法添加 User.hbm.xml 的配置, 所以可以在代码中添加:
Configuration configuration = new Configuration().addResource("com/oscar999/Usr.hbm.xml");
方式3. 可以直接在代码中进行设置, 类似
Configuration configuration = new Configuration().addResource("com/oscar999/Usr.hbm.xml") .setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver") .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/test") .setProperty("hibernate.connection.username", "root") .setProperty("hibernate.connection.password", "123456") .setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect") .setProperty("hibernate.hbm2ddl.auto", "update");也可以通过
Configuration configuration = new Configuration().addClass(com.oscar999.Usr.class)添加映射文件。
一般状况下, 添加 hibernate.cfg.xml 会比较常用, .properties 和 .xml 也可以并存。
除此之外, 如果不想使用默认的文件名, 也可以这样:
File file = new File("src/com/oscar999/myhibernate.xml"); Configuration config = new Configuration(); config.configure(file);
SessionFactory 对象的创建
Configuration 创建完成之后, 接下来就是创建 SessionFactory 了。
在Hibernate 3中,创建SessionFactory 的方式是:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
但是在, Hibernate 4 中, 这种方法已经过时了。
目前推荐的使用方式是:
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()).build(); SessionFactory sessionFactory = configuration .buildSessionFactory(serviceRegistry);至于为什么要使用这种方式, 可以参考:
http://planet.jboss.org/post/hibernate_orm_service_registry
session 的使用
sessionFactory 有了, 接下来就简单了,直接贴一个例子
Configuration configuration = new Configuration().addClass(com.oscar999.Usr.class); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()).build(); SessionFactory sessionFactory = configuration .buildSessionFactory(serviceRegistry); Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(new Usr("uesr3")); session.getTransaction().commit(); session.close(); sessionFactory.close();
需要注意的就是, 记得关闭Session 和 SessionFactory
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。