为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate-学习记录001

标签:
Java

1、Hibernate Tools for Eclipse Plugins
hibernate被jboss收购 下载最新的也可以
到http://tools.jboss.org/downloads/ 下载包(Artifacts下面)
下载好包后,在eclipse->help->install new software location选择下载好的包
只选择hibernate tools安装 安装过程会提示认证问题 点OK就行(可能是不同的eclipse版本)

2、下载hibernate.jar包 导入hibernate-core.jar中的dtd(configuration mapping)文件
有提示功能
key -//Hibernate/Hibernate Configuration DTD 3.0//EN <public ID>
key -//Hibernate/Hibernate Mapping DTD 3.0//EN <public ID>

3、session的获得方式
A、SessionFactory.openSession()
B、getCurrentSession() 需要在cfg.xml中配置
本地事务(jdbc事务) <property name="hibernate.current_session_context_class">thread</property>
全局事务(jta事务) <property name="hibernate.current_session_context_class">jta</property> (用的较少)
A:每次回创建新的对象 / 不会自动关闭,多次未关闭可能会导致连接池的溢出 <关闭不等于对象销毁,是释放到连接池中>
B:使用现有的session对象(类似单例) / 会在提交和事务回滚自动关闭

3、报错记录
A、出现报错信息 near 'type=myisam' 报错:一般是数据库方言问题 较高版本的hibernate对MySQL高版本支持
org.hibernate.dialect.MySQLDialect 改成org.hibernate.dialect.MySQL57Dialect或者org.hibernate.dialect.MySQL5Dialect
B、报错信息有 'useSSL=true' 'use=false' 应该是要设置是否使用ssl传输数据库
因为高版本的MySQL支持SSL
C、hibernate对数据库的操作都封装在事务中,默认是非自动提交,使用session如果没有开启事务,手动提交事务,对象并不会真正保存到数据库;
如果想让hibernate像jdbc那样自动提交事务,必须调用session对象的doWork(方法),获得jdbc的connection后设置为自动提交模式
最后调用session.flush()<!不推挤>

4、hibernate的CURD
save()
update()
delete()
get()/load()查询单个记录
区别:get 不考虑缓存情况,会直接发送sql语句,返回持久化对象 / 数据库中不存在这个对象是 返回是null
load 方法调用后返回一个代理对象,该对象只保存实体对象的ID,用到非主键属性时才会发送sql语句 / 数据库中不存在,会抛java.hibernate.ObjectNotFindException

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 26
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消