您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 尚学堂hibernate学习笔记(word)
这个文件是我自己照着网上找到的马士兵老师的hibernate笔记截图版手打出来的有颜色部分的文字是我学习的时候自己添加的笔记说明(红色的除外)刨除去颜色部分就是和马士兵老师的原版文档一模一样了希望能给好学的朋友一点帮助目录课程内容51HelloWorld52Hibernate原理模拟-什么是O/RMapping以及为什么要有O/RMapping53常见的0/R框架(了解)54hibernate基础配置(重点)55ID生成策略(重点AUTO)56Hibernate核心开发接口介绍(重点)57对象的三种状态(了解)58关系映射(重点)59Hibernate査询(HQL)510在Struts基础上继续完善BBS200511性能优化(重点)512补充话题5风格51先脉络,后细节52先操作,后原理53重Annotation,轻xml配置文件5资源15[1].4.0.GA53注意阅读hibernatecompatibilitymatrix(hibernate网站download)54下载slf4jl.5.86HibernateHelloWorld61建立新java项目,名为hibernate_0100_HelloWorld62学习建User-library-hibernate,并加入相应的jar包63引入mysql的JDBC驱动包64在mysql中建立对应的数据库以及表65建立hibernate配置文件hibernate.cfg.xml66建立Student类67建立Student映射文件Student.hbm.xml68将映射文件加入到hibernate.cfg.xml中69写测试类Main,在Main中对Student对象进行直接的存储测试610FAQ:611Note:612建立能力7建立Annotation版本的HelloWorld71创建teacher表,createtableteacher(idintprimarykey,namevarhcar(20),titlevarchar(lO));72创建Teacher类73在hibernatelib中加入annotation的jar包74参考Annotaion文档建立对应的注解75在hibernate.cfg.xml中建立映射mappingclass:.../〉76参考文裆进行测试(注意文裆中缺少configure()的小bug)77FAQ:@不给提示7WhatisandWhy0/RMapping71JDBC操作数据库很繁琐72Sql语句编写并不是面向对象的73可以在对象和关系表之间建立关联来简化编程740/RMapping简化编程750/RMapping跨越数据库平台76Hibernate_0200_OR_Mapping_Simulation70/RMappingFrameworks71hibernate72toplink83jdo84JPA8Hibernate基础配置81对应项目:Hibernate_0300_BasicConfiguration82介绍MSQL的图形化客户端83hibernate.cfg.xml:hbni2ddl.auto84搭建日志环境并配置显示DDL语句85搭建jUnit环境86hibernate.cfg.xml:show_sql87hibernate.cfg.xml:format_sql88表名和类名不同,对表名进行配置89字段名和属性相同810字段名和属性名不同811不需要psersistence的字段(不用列)812映射日期与时间类型,指定时间精度813映射枚举类型(比较少用)914字段映射的位置(field或者get方法)915@Lob916课外:CLOBBLOB类型的数据存取917课外:Hibernate自定义数据类型918hibernate类型9ID生成策略91对应项目:hibernate_0400_ID92注意:93xml生成id94注解方式:@GeneratedValue95FAQ;106联合主键10核心幵发接口介绍121hibernate_0500_CoreAPI122HibernateAPI文档需要单独下载123Configuration124SessoinFactor125Session126SchemaExport(自动建表)137Query接口138Note:13三种对象状态141上一个project142三种状态的区分关键在于143三种状态:144对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比如改变属性的14关系映射(重要)15对象之间的关系151这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于152简化问题:153—对一154—对多155组件映射15一对一关联161一对一单向外键关联162一对一双向外键关联163一对一单向主键关联(不重要)174一对一双向主键关联(不重要)175联合主键17组件映射171项目:hibernate_1100_component172对象关系:一个对象是另外一个对象的一部分173数据库表:一张表174annotation:@Embeddable@Embbeded175xml:使用component,例如:18多对一与一对多181多对一单向关联182一对多单向关联193一对多(多对一)双向关联19多对多201单向关联:202双向关联:20关联关系中的CRUD_Cascade_Fetch211hibernate_1700_one2many_many2one_bi_crud212设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管)213cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大214铁律:双向关系在程序中要设定双向关联215铁律:双向mappedBy216fetch217Update时@ManyToOne()中的cascade参数关系228Delete时@ManyToOne()中的cascade关系229O/RMapping编程模型2310要想删除或者更新先做load,除了精确知道ID之外2311如果想消除关联关系,先设定关系为null.再删除对应记录,如果不删记录,该记录变成垃圾数据2312练习:多对多的CRUD23关系映射总结241什么样的关系,设计什么样的表,进行什么样的映射242CRUD,按照自然的理解即可(动手测试)24集合映射(不太重要)241项目名称:hibernate_1800_Collections_Mapping242Set243List(与Set差不多多个@OrderBy)244Map24继承映射(不太重要)241三种方式24作业:241学生课程、分数的设计(重要)242设计:243树状结构的设计(至关重要)25Hibernate查询(QueryLanguage)26HQLvsEJBQL261NativeSQLHQL.EJBQL(JPQL1.0)QBC(QueryByCriteria)QBE(QueryByExample)262总结:QL应该和导航关系结合,共同为査询提供服务。26性能优化261注意session.clear()的运用,尤其在不断分页循环的时候2621+N问题(典型的面试题)(详见hibernate_2800_Hibernate_1+N项目)263list和iterate不同之处(//主要为了面试详见hibernate_2900_Hibernate_list_iterate)264一级缓存和二级缓存和査询缓存(面试题)(详见hibernate_3000_Hibernate_3KindsOf_Cache)265事务并发处理(面试的意义更大)27课程内容1HelloWorlda)Xmlb)annotation2Hibernate原理模拟-什么是O/RMapping以及为什么要有O/RMapping3常见的0/R框架(了解)4hibernate基础配置(重点)5ID生成策略(重点AUTO)6Hibernate核心开发接口介绍(重点)7对象的三种状态(了解)8关系映射(重点)9Hibernate査询(HQL)10在Struts基础上继续完善BBS20011性能优化(重点)12补充话题风格1先脉络,2后细节3先操作,4后原理5重Annotation,轻xml配置文件a)JPAb)hibernate–extension资源1[1].4.0.GA3注意阅读hibernatecompatibilitymatrix(hibernate网站download)4下载slf4jl.5.8HibernateHelloWorld1建立新java项目,名2为hibernate_0100_HelloWorld3学习建User-library-hibernate,并加入相应的jar包a)项目右键-buildpath-configurebuildpath-addlibrary—c)选择User-library,在其中新建libraray,命名为hibernated)在该library中加入hibernate所需jar包i.hibernatecoreii./requirediii.slf-nopjar4引入mysql的JDBC驱动包5在mysql中建立对应的数据库以及表a)createdatabasehibernate;b)usehibernate;c)createtableStudent(idintprimarykey,namevarchar(20),ageint);6建立hibernate配置文件hibernate.cfg.xmla)从参考文档中copyb)修改对应的数据库连接d)注释掉暂时用不上的内容7建立Student类8建立Student映射文件Student.hbm.xmla)参考文档9将映射文件加入到hibernate.cfg.xml中a)参考文档10写测试类Main,在Main中对Student对象进行直接的存储测试a)参考文挡11FAQ:c)要调用newConfiguration().configure().buildSessionFactory(),而不是要省略configure,否则会出hibernatedialectmustbeset的异常12Note:a)请务必建立自己动手査文挡的能力b)重要的是:i.要建立自己动手查一手文档的信心ii.还有建立自己动手查一手文档的习惯!v.主动学习,砍弃被动接受灌输的习惯!13建立能力a)错误读完整b)读—昔误的关键行c)排除法d)比较法e)google建立Annotation版本的HelloWorld1创建teacher表,2createtableteacher(idintprimarykey,namevarhcar(20),titlevarchar(lO));3创建Teacher类4在hibernatelib中加入annotation的jar包a)hibernateannotaionjarb)ejb3persistencejarc)hibernatecommon-annotations.jard)注意文裆中没有提到hibernate-common-annotations.jar文件5参考Annotaion文档建立对应的注解6在hib
本文标题:尚学堂hibernate学习笔记(word)
链接地址:https://www.777doc.com/doc-5477193 .html