ITPub博客

首页 > IT职业 > IT职场 > Hibernate-学习记录001

Hibernate-学习记录001

IT职场 作者:supergirlxu 时间:2021-09-09 09:06:13 0 删除 编辑

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
key -//Hibernate/Hibernate Mapping DTD 3.0//EN

3、session的获得方式
A、SessionFactory.openSession()
B、getCurrentSession() 需要在cfg.xml中配置
本地事务(jdbc事务) thread
全局事务(jta事务) jta (用的较少)
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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/644/viewspace-2799438/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    220
  • 访问量
    1690