- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Hibernate初级学习总结
Hibernate是基于是么原因产生的?(Hibernate的有点)
答案:实现业务逻辑的代码和数据库访问代码掺杂在一起,使程序结构不清晰,可读性差
在程序代码中嵌入面向关系的SQL语句,使开发人员不能完全运用面向对象的思维来编写程序
业务逻辑和关系数据模型绑定,如果关系数据模型发生变化,例如修改了CUSTOMERS表的结构,那么必须手工修改程序代码中所有相关的SQL语句,这增加了维护软件的难度
如果程序代码中的SQL语句包含语法错误,在编译时不能检查这种错误,只有在运行时才能发现这种错误,这增加了调试程序的难度
Hibernate是什么?
它是连接Java应用程序和关系数据库的中间件
它对JDBCAPI进行了封装,负责Java对象的持久化
在分层软件体系结构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑
它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射
hibernate中进行DML数据库操作时当注意的事项!
PublicvoidinsertUser(Useruser){
Configurationcfg=newConfiguration().configure();SessionFactorysf=cfg.buildSessionFactory();Sessions=sf.openSession();
Transactiontx=s.beginTransaction();
//Transactiontx=s.getTransaction();tx.beigin();s.save(user);
mit();
}
1).Configuration这个对象是用来解析和读取hibernate配置文件的对象,进一创建hibernate上下文对象sessionFactory启动hibernate框架。
.configure()有了这个方法,程序就会自动去src根目录找所需要的配置文件。2).SessionFactory这是一个重量级的对象,它的创建将会使hibernate框架启动,进而创建Session对象,数据源的代理,是一个重量级的对象!如果每次都创建和销毁这样就会影响程序的运行效率,所以要单独的写在一个工具类当中,hibernae已经为我们写好了这个工具类,就是hibernateSessionFactory.java这个工具类。3)。Hibernate中要求必须要进行事物的控制才能正确的操作数据库,即没有自动提交。基于Session下创建的Transaction这个对象进行事物的控制。
3)。这里如果数据提交失败的话那它怎么没有数据回滚的操作呢?这里就要注意:其实hibernate已经在save()这个函数内帮我们做了try和catch进行了数据的回滚操作,即hibernate处理异常的方式是运行时异常RuntimenException。
Hibernate中复合主键的配置 多个字段合起来构成一个主键
当没有代理主键时,采用多个自然主键来做主键
两种映射方式:直接映射和间接映射
Demo3
直接法:
user.hbm.xml中配置如下:
composite-id
key-propertyname=“name”column=“name”type=“string”/
key-propertyname=“phone”column=“phone” type=“long”/
/composite-id
间接法:
ClassUsrPk{Stringname;Longphone;
}
ClassUser{
UserPkid;
}
Useru=newUser();UserPkid=newUserPk();id.setName(“bbb”);id.setPhone();u.setId(id);
user.hbm.xml中配置如下:
composite-idclass”com.bluedot.domain.UserPk”
key-propertyname=”name”column=”name”type=”string”/
key-propertyname=”phone”column=”phone”type=”long”
/composite-id
Hibernate的映射类型有那些?
Hibernate的映射类型是Java类型于SQL类型之间的桥梁
通过type属性来设置(如id和
您可能关注的文档
- Gear 42分析和总结分析和总结.docx
- Gear 43分析和总结分析和总结.docx
- Gear 45分析和总结分析和总结.docx
- Gear 210分析和总结分析和总结.docx
- Gear 402分析和总结分析和总结.docx
- Gear 511分析和总结分析和总结.docx
- Gear 512分析和总结分析和总结.docx
- Gear 513分析和总结分析和总结.docx
- Gear Technology 31分析和总结分析和总结.docx
- Gear Technology 301分析和总结分析和总结.docx
- 2021-2022学年湖南省常德市安乡县四年级上学期期中语文真题及答案.pdf
- 2023-2024学年河南省南阳市社旗县四年级上学期期中数学真题及答案.pdf
- 2022-2023学年云南省曲靖市四年级下学期期末数学真题及答案.pdf
- 2021-2022学年河南省周口市鹿邑县二年级下册月考语文真题及答案.pdf
- 2018年河南焦作解放区教师招聘考试真题及答案.pdf
- 2019年江西公务员行测考试真题及答案-乡镇.pdf
- 2019中国石油报社应届高校毕业生招聘试题及答案解析.pdf
- 光大银行招聘应届毕业生能力素质测试笔试真题及答案.pdf
- 2024年广西百色教师招聘考试模拟题及答案.pdf
- 2021-2022学年浙江绍兴诸暨市五年级上册语文期末试卷及答案.pdf
文档评论(0)