学习Hibernate
1.eclipse 先在线安装Hibernate tools插件(搜索jboss 然后只选择hibernate tools),然后在window-preference-XML-XMLcatalog-add-把publicID改成URI-在location里面添加DTD(随便解压一个hibernate的核心包就有hibernate-configuration-3.0.dtd文件),然后在key哪里添加 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd 然后点OK
2.建项目 创建hibernate的配置文件,
- 数据源信息 配置得快吐了
- 方言
- 格式化sql
- 是否打印sql
- 生成数据表得策略
- 字符编码
- 指定关联得xxxx.hbm.xml(这个操作要等做完第3步在做)
3.写个entity类,然后生成一个xxx.hbm.xm配置文件,然后进行第二部的第7小步
Hibernate对象的四种状态以及转化关系 如下图(图来源于猫儿36,侵权删)
下面是对hibernate的操作
- 从sessionFactory获取session
- 开启事务
- 利用session进行crud操作
- 提交事务
- 关闭session和sessionFactory
基本保存操作:
- save(),数据库采用自增id,对象若有id,则id不生效
- persist(),数据库采用自增id,若保存前对象有id,报错
- get(),发送查询语句,立即加载对象,若没有返回null
-
load(),延迟加载 不用该对象 就不发送查询语句,若session未关闭,使用该对象而数据库没有对应字段则抛出异常,若在使用代理对象前关闭session则可能抛出懒加载异常,
基本更新操作
更新一个持久化对象,在session未关闭之前 不需要显式调用update,事务会自己调用
- 不在同一session里面的对象要显式调用update(也就是更新一个游离对象)
- 如数据表中没有对应记录调用会抛出异常
- 若sesison关联了一个游离对象session中存在相同OID的持久化对象抛出异常(session中不需要他两个相同OID的对象)
- saveOrUpdate()方法,新对象若是游离对象则执行update操作,若是临时对象则执行save操作,当OID不为空,数据库没有对应记录 抛出异常
- 若在映射文件设置unsaved-value的值等于该对象的OID,该对象也被认为是游离对象,该对象会被insert
- meger方法
基本删除操作
- Delete,OID和数据库对应 删除,对不上抛出异常,删除后的对象不能执行保存和更新操作,因为有OID所以要在·Hibernate配置use_identifier_rollback为true
- evict方法 从session缓存中删除
调用session的dowork方法(利用匿名内部类) 然后就变成jdbc了;
触发器????????????????什么鬼
配置数据源一类的
对象关系映射文件hbm.xml文件:
啊啊啊啊啊啊啊啊啊 有点心浮气躁了 感觉自己静不下心来
HQL查询:面向对象的查询语言
休息,换个视频看看后面再来整理