[Hibernate系列—] 2. 创建SessionFactory 与 Session
Configuration 对象创建
要创建SessionFactory , 首先要创建Configuration 对象。
这个对象就是去读取hibernate 的一些配置信息。
默认状况下, hibernate会到 classPath 目录下加载hibernate.cfg.xml 文件。
这里延续上一篇的例子:
这个配置文件的方式可以有多种, 可以是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
[Hibernate系列—] 2. 创建SessionFactory 与 Session相关推荐
- Hibernate初始化创建SessionFactory,Session,关闭SessonFactory,session
1.hibernate.cfg.xml 1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configur ...
- Hibernate之代码创建SessionFactory
hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibe ...
- Hibernate的执行流程——SessionFactory的创建
Hibernate的执行流程: 1.创建Configuration类实例,用来读取并解析配置文件(如Hibernate.cfg.xml),一个Configuration实例代表hibernate所有P ...
- hibernate之SessionFactory和Session
1. 关于SessionFactory 1.) SessionFactory是一个与连接池的类差不多的东西,在这里存着多个Session-与数据库的会话(相当于connection) 2.) 因为连接 ...
- Hibernate - SessionFactory和Session详解
[1]SessionFactory 接口 SessionFactory 接口是针对单个数据库映射关系经过编译后的内存镜像,是线程安全的. SessionFactory 对象一旦构造完毕,即被赋予特定的 ...
- 【SSH框架】之Hibernate系列一
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Hibernate框架概述 (1).什么是Hibernate Hibernate是一个开放源 ...
- (Hibernate进阶)Hibernate系列——总结篇(九)
这篇博文是hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- 使用Struts2,Hibernate和MySQL创建个人MusicManager Web应用程序的研讨会
概述: 在本研讨会教程中,我们将使用Struts 2,Hibernate和MySQL数据库开发一个个人音乐管理器应用程序. 该Web应用程序可用于将您的音乐收藏添加到数据库中. 我们将显示用于添加唱片 ...
最新文章
- 使用visualvm远程监控LINUX服务器JVM
- java基础之包装类
- YbtOJ#20066-[NOIP2020模拟赛B组Day4]筹备计划【线段树,树状数组】
- 第一个将Palette Mode引入VVC(H.266),阿里云在JVET会议上引起关注
- Maven学习总结(54)——使用 git-commit-id-plugin 插件来管理项目发版
- 不会框架不要紧,我带你自定义框架
- 4.网络层(2)---子网划分
- SQL数据库基础(六)
- STM32中使用MMA7660重力加速度传感器
- 蚂蚁全媒体中心总编刘鑫炜解答:「李子柒说时代给了我一阵风」,成就自媒体网红需要哪些助力?
- Landsat系列卫星数据应用介绍
- 设置多个dns_迅雷:要想下载速度快 请避免使用国外公共DNS服务
- 地址解析(仅供参考与学习)<Java>
- 网络工程师软件安装包合集
- 快速在数据库添加一年的日期,区分休息日和工作日
- 一次正交设计和组合设计之旅
- 用 HTTPS 安全吗?HTTPS 的原理是啥?
- 文件下载的三种方式,前端和后端实现
- 7-1 求N分之一序列前N项和 (15 分)
- 太弱的愿望 = 没有愿望
热门文章
- 【数字信号处理】线性时不变系统 LTI ( 判断某个系统是否是 “ 非时变 “ 系统 | 案例一 | 先变换后移位 | 先移位后变换 )
- 【错误记录】Windows 系统 bat 脚本报错 ( 使用 pause 拦截窗口自动关闭 | 方便查看错误 )
- 【Java 并发编程】线程池机制 ( 线程池状态分析 | 线程池状态转换 | RUNNING | SHUTDOWN | STOP | TIDYING | TERMINATED )
- 【刷题记录】杂题记录
- 二周第三次课(3月28日)
- pdf.js 在线阅读PDF
- window.open打开一个新空白页面,不会自动刷新【解决方案】
- 网页瀑布流效果实现的几种方式
- 关于 微软必应词典客户端(pc) 的案例分析
- mysql空间扩展 VS PostGIS