Hibernate基本步骤

1.Hibernate基本步骤
1.1.引入jar包
1.2.编写hibernate.cfg.xml文件


thread
1.3.创建持久化类,实现Serializable接口
1.4.为持久化类编写.hbm.xml映射文件
1.5.中节点引用.hbm.xml文件
1.6.Java代码运行
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session ses = sf.getCurrentSession();
Transaction tx = session.beginTransaction();
ses.save(entity);
tx.commit();//tx.rollback();
ses.close();
2.按主键查询
Session.get(class,Serializable),如果没有返回null,立即加载
Session.load(class,Serializable),延迟加载的按主键查询,找不到报异常

主键id生成策略:
	assigned:程序负责生成id值,并赋给持久化对象,
	increment:Hibernate自动从该表该列查找最大值,并且+1
	identity:适合SqlServer、MySQL
	sequence:适合oracle、db2等大型数据库
	native:自动。hibernate根据数据库自行决定采用何种策略

3.Session的增、删、改
save():对象必须没有id,执行insert语句
saveOrUpdate():对象有id就执行update(),否则执行save()
update():对象必须有id,执行update语句
delete():
evict():把持久化对象从session缓存中驱逐出去
close():关闭session
clear():清空session缓存中的所有对象
flush():刷新,把缓存中的瞬时、脏数据都提交到数据库
4.Hibernate中java对象的三种状态
4.1.瞬时状态:与数据库没有关联的对象。比如新创建的实体对象、被delete()后的对象
4.2.持久状态:与数据库同步的对象。比如执行get()、load()、save()、update()、saveOrUpdate()后的对象
4.3.游离状态:曾持久但已经脱管的对象。比如执行evict()、close()、clear()后的对象
5.脏检查和刷新缓存机制
flush()刷新缓存时
commit()提交事务时
6.更新数据的方法
dynamic-update只更新发生变化的属性值
merge():游离对象覆盖掉与Session缓存/数据库中的数据,实现更新;如果传入瞬时对象则copy并insert
有id的游离对象,先select,再update
有id的游离对象(数据库中无此id),先select,再insert

	如果session中存在相同持久化标识(identifier)的实例,用用户给出的对象的状态覆盖旧有的持久实例
	如果session没有相应的持久实例,则尝试从数据库中加载,或copy为持久化实例
	最后返回该持久实例
	用户给出的这个对象没有被关联到session上,它依旧是脱管的

7.merge与saveOrUpdate区别:merge会返回一个新的持久化对象,传入的仍旧是托管的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要一百块

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值