Hibernate基本概念
来源:互联网 发布:图腾网络机柜 9u 编辑:程序博客网 时间:2024/05/10 18:09
Hibernate基本概念
1、对数据进行开发时需要的三类文件[理论上知道其中一个,其他两个都可以利用工具生成]:
(1) domain类User
(2) 映射文件User.hbm.xml
(3) 数据库的表create table user(….);
2、这三类文件的顺序(三个开发流程):
(1) 由Domain objectàmappingàdb(官方推荐)【从面向对象出发】
(2) 由db开始,用工具生成mapping和Domain object(使用较多)【站在关系模型角度】
(3) 由映射文件开始----à生成表----à生成domain层
3、对实体类对象的限制:
(1) 默认的构造方法(必须得)【要么不写构造函数,要么写无参构造。在工作过程中利用反射机制中的newInstance()创建指定类型的对象Class clazz=User.class; User user=clazz.newInstance();】
(2) 有无意义的标示符id(主键)(可选)
(3) 非final的,对懒加载有影响(可选)(懒加载时会自动生成一个子类然后继续进行,当为final时,就不能被继承了,所有懒加载就无效了)
4、映射文件:
一个Java类在映射文件中用一对<class>标签进行表示,有多个java类,在映射文件中就应该有多个<class>标签
这些<class>标签可以放在一个映射文件中,也可以放到多个映射文件中
映射文件名--------类名.hbm.xml[这样命名,可读性好]
5、代码的编写
查询一般不需要事务
工具类HibernateUtil
static{
Configuration cfg=new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
6、Session接口中的常用方法
beginTransaction();//开启事务并且返回该事务对象
clear();清除缓存
contains();判断缓冲区中是否包含指定对象
(1) save,persist保存数据:在事务开启时,save和persist相同,都为保存;在没有开启事务时,save()方法产生了insert语句并做了插入操作,但由于没有提交事务,所有最终被回滚了,而persist()在事务外不会产生insert语句
(2) delete,删除对象
(3) update,更新对象,如果数据库中没有记录,会出现异常
(4)get,根据id查询。在session中查得时候,用session只能按id去查,要像实现复杂的查询就不能通过session对象了,要通过HQL或Criteria
(5)load,根据id查询(返回的是代理,不会立即访问数据库)
Get()与Load()的区别:Load方法不会立即连接数据库,而是在第一次用时才会连接数据库,而get方法会马上连接数据库
(6)saveOrUpdate,merge(根据id和version的值来确定是save或update),调用merge你的对象还是脱管的
(7)lock(把对象变成持久化对象,但不会同步对象的状态)
7、对象状态:
(1) 瞬时状态:自己new出来的对象就是瞬时状态
User user = user User();//user是一个瞬时状态
在数据库的表中没有记录和该瞬时对象相对应
(2) 持久状态:session.save(user);
数据库中有相应的记录与之相对应,并且当前的对象和session有联系,被session管理,只要user对象有任何的改变hibernate都是知道的,数据库中的也会改变
(3) 脱管状态:数据库的表中有一条记录和对象相对应,但是它和session没有联系,不被session管理,user对象发生改变,hibernate不会知道了
- hibernate基本概念
- Hibernate基本概念
- Hibernate基本概念
- Hibernate基本概念
- Hibernate基本概念
- Hibernate 基本概念
- Hibernate基本概念
- Hibernate几个基本概念
- Hibernate基本概念和CURD
- Hibernate基本概念和CRUD2
- Hibernate基本概念和CRUD2
- 框架之Hibernate 基本概念
- Hibernate基本概念 (2)
- Hibernate基本概念 (3)
- Hibernate基本概念 (4)
- Hibernate基本概念 (5)
- hibernate基本概念及初始配置
- Hibernate的基本概念和CURD
- [翻译+推荐]你需要知道的:WCF、WF、ADO.NET SyncServices和ClickOnce
- 第一个Android的应用程序目录结构详说
- iOS应用审核的通关秘籍
- windows远程连接virtual box中的centos
- chrome 默认不支持webGL
- Hibernate基本概念
- 给Android应用开发者的十个建议
- 实现像网易和QQ动态导航按钮
- radio的处理(checkbox也可以借鉴)
- Win32 多线程的创建方法和基本使用
- C语言 顺序栈的使用
- 非递归实现二叉树的遍历
- 收拾心情
- CL中'和`的区别