初次邂逅Hibernate之进一步了解
来源:互联网 发布:一维数组的概念 编辑:程序博客网 时间:2024/06/04 19:54
在:http://blog.csdn.net/qq_21231581/article/details/51811995中我们将Hibernate的环境配置好,并且做了一个简单的数据库插入bean对象的操作。对其中cfg.xml或API代码不甚知晓,然而知其然不知其所以然是不行的,所以这次我把一些Hibernate配置及代码进行整理解释,以便记忆及分享。
1.cfg.xml文件常见属性介绍
hibernate.show_sql:设置为true时,Hibernate运行时在控制台输出被执行的SQL语句,方便开发时使用
hibernate.format_sql:设置为true时,输出的SQL语句进行排版,方便查看
hbm2ddl.auto:
设置validate:加载hibernate时,验证创建数据库表结构
设置create:每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
设置update:加载hibernate自动更新数据库结构
设置create-drop: 在create的基础之上,同时系统关闭前执行drop
hibernate.dialect:配置数据库方言,Hibernate会据此作出对应的优化
hibernate.default_schema:默认的数据库
2.Session简介
刚接触Session我也有点不明其用处,在写代码的过程中逐步了解,我把它当做JDBC中的connection来看待:用她可以执行数据库的增删查改操作(save(),update(),delete(),createQuery())等,
当然,获取Session对象也需要简单的几步:
1.加载cfg.xml文件的信息,即创建Configuration对象:
Configuration config = new Configuration().configure();2.通过Configuration对象的属性信息创建ServiceRegistry服务注册对象:
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(config.getProperties()) .buildServiceRegistry();
3.通过Configuration及ServiceRegistry创建SessionFactory工厂对象:
this.sessionFactory = config.buildSessionFactory(serviceRegistry);4.接下来就可以通过SessionFactory创建Session对象,而创建Session对象的API方法有2种:
第一种:
this.session = sessionFactory.openSession();第二种:需要在cfg.xml文件中如下配置
<property name="current_session_context_class">thread</property>该属性有thread,jta,manage,custom等,thread最常用,接着代码中如下:
this.session = sessionFactory.getCurrentSession();
二者的区别:
getCurentSession()类似于单例模式,每次获取的Session(包括Connection)都是同一个内存对象,并且相对于 openSession()来说不需要调用session.close(),而后者则必须,否则可能出现连接池对象溢出的情况(Connection对 象不一致)
5.Session中的get()与load()方法的区别
可根据id使用其方法获取单个对象,使用中形如:
Student studnet2 = (Student) session.load(Student.class, id);区别:
get方法立即发出发出SQL语句执行,并返回pojo对象,若未查询到结果则返回null
load方法只保存代理对象的id,知道该对象的非主属性被使用时发出SQL语句执行返回一个代理对象,若未查询到结果则抛出ObjectNotFountException
3.Transaction简介
在JDBC中是自动提交事务的,但是Hibernate中Session操作之前需要开启事务:
this.transaction = session.beginTransaction();结束session操作后需提交该事务
this.transaction.commit();若不这样做的话,Session所做的操作将无法真正保存到数据库中
4.hbm.xml文件常见配置介绍
有网友在这一方面分享得很全面,值得学习:http://blog.csdn.net/wangchangshuai0010/article/details/8836963
- 初次邂逅Hibernate之进一步了解
- 初次邂逅Hibernate之准备工作
- 初次邂逅Hibernate之环境配置
- 初次邂逅Hibernate之关联映射(一对多,多对一,双向)
- 初次邂逅swift
- 初次邂逅sqlmap
- 树状数组的初次邂逅
- 与FFmpeg的初次邂逅
- 初次邂逅句柄类 --C++ primer
- 进一步了解String
- 进一步了解String
- 想进一步了解ServerVariables,
- 进一步了解String
- 进一步了解JAX-RPC
- 进一步了解MDI窗体
- 进一步了解Sticky Bit
- 线段树 进一步了解
- 进一步了解const指针
- 将Sprite转换为Image
- VMware Workstation10.0.4 build-2249910安装ubuntu-14.04-desktop-amd64记录
- 基于U-BOOT-2010.09移植OK6410开发版记录(二)
- 241. Different Ways to Add Parentheses
- scanf正则表达式
- 初次邂逅Hibernate之进一步了解
- Matlab的GUI参数传递方式总结
- BUG之虐之思考篇
- 初识C++
- Hibernate.hbm2ddl.auto理解
- Mybatis--Statement Builders
- linux下管道的容量以及实现机制
- Decision Tree
- TimesTen 数据库复制学习:16. 一个缓存组,复制,客户端自动切换的串烧实验