Hibernate工作原理(1)
这两天再看hibernate,就自己总结了hibernate对jdbc的封装过程。
1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息
3.通过config.buildSessionFactory();//创建SessionFactory
4.sessionFactory.openSession();//打开Sesssion
5.session.beginTransaction();//创建事务Transation
6.persistent operate持久化操作
7.session.getTransaction().commit();//提交事务
8.关闭Session
9.关闭SesstionFactory
这里是没有使用配置文件,手写的文件:
public int updateDm_bm(String str){ int resu=0; //获取会话工厂 SessionFactory sf=this.getSessionFactory(); //获取SessionFactory的会话。SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象 Session session=(Session)this.getSessionFactory().getCurrentSession(); sf.openSession(); //开始事务 Transaction t=session.beginTransaction(); Query query =session.createQuery(str); //提交事务 resu=query.executeUpdate(); // Query.executeUpdate()方法返回的整型值表明了受此操作影响 return resu; }
其实我的IDE是Myeclipes的里面有自动生成hibernate文件的工具。仔细的看看系统自动生成的代码:
配置文件:
<hibernate-configuration> <session-factory> <property name="connection.username">root</property> <property name="connection.url"> jdbc:mysql://10.5.110.239:3306/test </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="myeclipse.connection.profile">root</property> <property name="connection.password">chen</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <mapping resource="DAO/User.hbm.xml" /> </session-factory> </hibernate-configuration>映射文件: <hibernate-mapping> <class name="DAO.User" table="user" catalog="test"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="assigned" /> </id> <property name="username" type="java.lang.String"> <column name="username" length="32" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="32" /> </property>POJO文件和DAO文件: public void save(User transientInstance) { log.debug("saving User instance"); try { getSession().save(transientInstance); log.debug("save successful"); } catch (RuntimeException re) { log.error("save failed", re); throw re; } }SessionFactory和Session类文件:就是建立加载配置文件,数据库连接,打开事务等操作: public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; }
Hibernate工作原理(1)相关推荐
- struts2、hibernate工作原理和流程
2019独角兽企业重金招聘Python工程师标准>>> struts2原理 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Control ...
- Hibernate工作原理
现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力.当应用程序对于处于Session管理下的POJO实例执行操作时,Hibernate ...
- Struts1、Struts2、Hibernate、Spring框架工作原理介绍
Struts1工作原理 Struts1工作原理图 1 .初始化: struts 框架的总控制器 ActionServlet 是一个 Servlet ,它在 web.xml 中配置成自动启动的 Serv ...
- Hibernate执行原理总结
hibernate工作原理 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件. 2.由hibernate.cfg.xml中的< ...
- Struts1工作原理
Struts1工作原理图 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(st ...
- java ssh实现原理_SSH三大框架的工作原理及流程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Hibernate工作原理及为什么要用? 原理 通过Configuration().configure();读取并解析hibernate.cfg.xml配 ...
- SSH框架笔记_SSH三大框架的工作原理及流程
Hibernate工作原理及为什么要用? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg ...
- Hibernate的工作原理
Hibernate的工作原理 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.c ...
- Hibernate的发展和特点以及Hibernate的工作原理简介
1.Hibernate的发展和特点: (1).Hibernate介绍:Hibernate是封装了JDBC的一种开放源代码的对象/关系映射(ORM Object-Relatiion Mapping)框架 ...
最新文章
- javax.net.ssl.SSLHandshakeException(Cas导入证书)
- pandas将某一列变为索引_Pandas 基础语法入门
- polkit 重新安装_不折腾,为U-NAS安装一个清爽的桌面,把小U打造成双面高手
- 0113——代理模式
- 如何运行python代码将各个表格的信息集合在一起_如何利用Python编程批量处理Excel来提高日常工作效率!...
- linux下mkdir出现mkdir(): File exists错误
- VSCode配置编译MSVC程序
- 为项目选择的python解释器无效_尝试使PyCharm正常工作,并不断获取“未选择Python解释器”...
- 【BUUCTF】[Zer0pts2020]Can you guess it?
- 阿里物联网云平台搭建(一)
- 如何在手机浏览器wap网页中点击链接跳转到微信界面
- dede判断字段是否为空
- c语言社团管理系统实验报告,C语言课程设计大学社团管理系统
- 【STM32Cube】学习笔记(二):超声波传感器
- 简单的使用css画勾、叉、三角、大于号
- Avamar 10007报错解决
- 【09】FreeRTOS的时间片调度
- Linux下文件解压缩、软件安装
- 光纤收发器怎么连接?光纤收发器连接方式解析
- BZOJ4627 回转寿司 值域线段树
热门文章
- 1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数...
- ASP.NET - MVC框架及搭建教程
- c#使用System.Windows.Forms.DataVisualization.Charting.dll绘制图表实例
- C# FolderBrowserDialog 的用法
- iOS实现经典登录页面,手机号自动格式化
- IOS pushViewController如何去隐藏tabbar
- 关于使用Nginx服务器发布静态网页或者代理
- 测试无数据_fpc柔性线路板压合辅材的测试方法
- C#中类与结构体的区别
- Jlink接口的Jtag和SWD接口定义