spring笔记

所需积分/C币:10 2014-03-05 22:50:14 674KB PDF
收藏 收藏
举报

spring学习笔记;供大家参考主要是spring的底层实现了
对一关联 16 1一对一单向外键关联 .16 2一对一双向夕键关联 ··新··新。·。···和日“, 16 3一对一单向主键关联(不重要) 17 4一对一双向主键关联(不重要)… 17 5联合主键 .17 组件映射.. 17 1项目: hibernate1100 componcnt 17 2对象关系:一个对象是另外一个对象的一部分 17 3数据库表:一张表 17 4 annotation: Embeddable @Embbeded 5xm:使用< component例如 18 多对一与一对多… 18 1多对一单向关联 18 2一对多单向关联… …19 3一对多(多对一)双向关联 19 多对多… 1单向关联:… 20 2双向关联: …20 关联关系中的 CRUD Cascade fetch 1 hibernate 1700 one2many many 2one bi crud 21 2设定 cascade以设定在持久化时对于关联对象的操作(CUD,R归 Fetch管) 21 3 cascade仅仅是帮我们省」编程的麻烦而已,不要把它的作用看的太大……21 4铁律:双向关系在程序中要设定双向关联 5铁律:双向 mapped 6 fetch 7 Update时 @Many Toone中的 cascade参数关系… 8 Delete时 @ManyToOneo中的 cascade关系 2 9O/ MApping编程模型…… l0要想删除或者更新先做load,除了精确知道I之外 23 11如果想消除关联关系,先设定关系为nulL.冉删除对应记录,如果不删记录,该记永变成 垃圾数据 23 12练习:多对多的CRUD 关系映射总结. 1什么样的关系,设计什么样的表,进行什么样的映射 ∴24 2CRUD,按照自然的理解即可(动手测试)… 24 集合映射(不太重要) 1项目名称: hibernate1800 Collections Mapping… 124 3List(与Set差不多多个@ a OrderBy)… 124 4 M 继承映射(不太重要)… 24 1三种方式… 24 作: 24 1学生误程、分数的设计(重要) 124 2设计: 24 3树状结构的设计(至关重要) .25 Hibernate查询( Query language)…...,. D。非香看。非春垂看·。。D HQL VS EJBQI灬 26 1 NativeSQL >HQL.> EJBQlOPQL 1.0)>QBC(Query By Criteria)>QBE(Query By Example)"26 2总结:OL应该和导航关系结合,共同为查询提供服务。… 性能优化 26 1注意 session.clear(的运用,尤其在不断分页循环的时候 26 21+N问题(典型的面试题)(详见 hibernate2800 Hibernate1N项日). 26 3list和 Iterate不同之处(/主要为了面试详宽 hibernate2900 Hibernate list iterate) 26 4一级缓存和二级缓存和査询缓存(面试题)(详见 hibernate_3000 Hibernate3 Kindsof cache) 26 5事务并发处理(面试的意义更大 27 课程内容 1 Helloworld a) Xml b)annotation 2 Hibernate原理模拟-什么是0/ R Mapping以及为什么要有0/ R Mapping 3常见的0/R框架(∫解) 4 hibernate基础配置(重点) 5ID生成策略(重点AUTO 6 Hibernate核心开发接口介绍(重点) 7对象的三种状态(了解) 8关系映射(重点) 9 Hibernate查询(HQL) 10在 Struts基础上继续完善BBS200 l1性能优化(重点) 12补充话题 风格 先脉终,后细节 2先操作,后原理 3重 Annotation,轻xm1配置文件 a) JPA b) hibernate- extension 资源 1http://www.hibernateorg 2 hibernate zh cn文档 3 hibernate annotation references 环境准备 1下载 hibernate- distribution-3.3.2.GA-dist 2下载 hibernate- annotations-3[1].4.0.GA 3注意阅读 hibernate compatibility matrix( hibernate网站 download) 4下载s1f4j1.5.8 Hibernate helloworld 1建立新java项目,名为 hibernate0100 HelloWorld 2学习建User-1 ibrary- hibernate,并加入相应的jar包 a)项目右键- bui ldpath- configure build path- add library b)选择User-1 ibrary,在其中新建1 ibraray,命名为 hibernate c)在该1 ibrary中加入 hibernate所需jar包 i. hibernate core ii./ required ii1. slf-nop jar 3引入mysq1的JDBC驱动包 4在 mysql中建立对应的数据库以及表 a) create database hibernate use hibernate c) create table Student (id int primary key, namevarchar(20), age int) 5建立 hibernate配置文件 hibernate.cfg.xm1 a)从参考文档中copy b)修改对应的数据库连接 c)注释掉暂时用不上的内容 6建立 Student类 7建立 Student映射文件 Student.hbm.xm1 a)参考文档 8将映射文件加入到 hibernate.cfg.xm1中 a)参考文档 9写测试类Main,在Main中对 Student对象进行直接的存储测试 a)参考文挡 10 FAC a)要调用 new Configuration(. configure(. buildSessionFactory(,而不是 要省略con' Igure,否则会出 hibernate dialect must be set的异常 11 Note: a)请务必建立自己动手查文挡的能力 b)重要的是 i.要建立自己动于查一手文档的信心 ii.还有建立自己动于查一手文档的习惯! 主动学习,砍弃被动接受灌输的习惯! 12建立能力 a)错误读完整 b)读一昔误的关键行 c)排除法 d)比较法 google 建立 Annotation版本的 Helloworld 1 EzE teacher tt, create table teacher (id int primary key, name varhcar(20), title varchar (10)) 2创建 Teacher类 3在 hibernate lib中加入 annotat ion的jar包 hibernate annotaion jar b) ejb3 persistence jar hibernate common-annotations. J d)注意文裆中没有提到 hibernate- common- annotations.jar文件 4参考 Annotaion文栏建立对应的注解 5在 hibernate.cfg.xm1中建立映射< mapping class:/ 6参考文裆进行测试(注意文裆中缺少 configure(的小bug) 7FAQ:@不给提示 a)配置 eclipse属性信息 content assist- acti vation-加上@ What is and Why 0/R Mapping JDBC操作数据库很繁琐 2Sq1语句编写并不是面向对象的 3可以在对象和关系表之间建立关联来简化编程 40/ R Mapping简化编程 50/ R Mapping跨越数据库平台 6 Hibernate 0200 OR Mapping Simulation 0/R Mapping Frameworks 1 hibernate 2 toplink 4 JPA )意愿统天下 Hibernate基础配置 1对应项目: Hibernate0300 BasicConfiguration 2介绍MSQL的图形化客户端 3 hibernate. cfg xml: hbni2ddlauto a)先建表还是先建实体类 4搭建日志环境并配置显小DDL语句 a)sf4与log4的关系:sf4像是一个大管家,可以管理许多的日志框架,log是其中之 b)加入sf4j-log4jar,加入log4的jar包,去掉s4 nop. jar c)从 hibernate/project/etc日录 copy log4 ]. properties d)査询 hibernate文裆,日志部分,调整日志的输出策略 5搭建jnit环境 a)需要注意 jUnit的Bug 6 hibernate. cfg xml: show sql 7 hibernate. cfg xml: format sql <-格式化显示输出sql-> <property name="format sql">true</property> 8表名和类名不同对表名进行配置 a)Annotation: @Table b)xml:自己查询 9字段名和属性相同 a)不用写@ column与默认的@ Basic效果一样 b)Xm1中个用写 column 10宇段名和属性名不同 a) Annotation:@ Column b)xml:自己查询 11不需要 persistence的字段(不用列) a) Annotation:(ai Transient b)xml不写 12映射日期与时问类型,指定时间精度 a) annotation: (a Temporal(参数)参数有3种只显示时间,只显示日期时间日期都显示 @ Temporale( TemporalType DATE)只显示日期 @ Temporal( TemporalType. TIME)只显示时间 ∥ Temporal( TemporalType TIMESTAMP)显示日期与时间 )xml:指定type class name="Teacher" table="Teacher' <id name="id "column=id ></id>> <property name="name type="time"/ </class> 13映射枚举类型(比较少用) a)(@Enumerated a Enumerated( numType ORDINAL枚举类型按位置数,如:0,1,2…存储 a Enumerated( EnumTypc STRING)枚举类型按设定值存储 b)xml:麻烦 l4字段映射的位置(feld或者get方法) a) best practice:保持feld(变量定义)和 get set方法的一致 5 aLOI 16课夕: CLOBBLOB类型的数据存取 17课外: Hibernate自定义数据类型 18 hibernate类型 ID生成策略 1对应项目: hibernate0400_ID 2注意 a)我们观察 hibernate生成表的结构并不是为了将来就用它生成,(可能还有自己的扩展,比如 index等)而是为了明白我们应该建立什么样的表和实体类映射 3xm1生成id a) generator Kid name=id> <generator class="native">/generator) </id> b)常用四个: native identity sequence uuid 4注解方式:@ Generatedvalue a)自定义ID b)AUIO(直接写 (@Generatedvalue相当如 native) i.默认:对 My SQL,使用 auto increment ii.对 Oracle使用 hibernate sequence(名称固定) c) IDENTITY(@GeneratedValue(strategy=GenerationType IDENTITY)) d) SEQUENCE (@GeneratedValue(strategy=Generation Type. SEQLENCE)) i. @SequenceGenerator(可自定义在数据库生成指定的 sequence名) (a /在 a generatedvalue中增加 generator=" teacherSEQ" @GeneratedValue(strategy-Generation Type SEQUENCE, generator"teacher SEQ") " teacher SEC"为 aSequence Generator的标识名 / tcachcrSEQ DB"为指定到数据库生成的 Scqucnco名 @Sequence Generator(name="teacherSEQ", sequenceNameteacherSEQ DB") public int getlo i return id e) TABLE(可以忘记) i.(a TableGenerator aTable Generator(name=teacherID table"teacher DB pkColumnName=key value pkColumn Value="pk value valuc column Namc="tcachcr allocationSize=D) 注:如果使用注解方式的uuid如下 (ald gEnerated value(generator="teacherUUID") a Generic Generator(name"teacherUUID", strategy=uuid") 5 FAQ a)用 Junit测试时 Hibernate Session Factory初始化异常个提小.疑似一个bu b)用main来做测试 6联合主键 a)Xm1方式: composi tc-id 将联合主键的属性提取出来,重新编写一个pojo类(原pojo类中的id,namc要删除并新加 入属性“ Student”) public class StudentPK implements Serializable i private String id private String name, ii.新建pojo类必须实现java.io. Serializable序列化接口 i.新pojo类要重写 equals和 hashCode方法 public boolean equals(Object o)i if(o instanceof StudentPk)i StudentPk pk=(StudentPk)o if(this id ==pk. getldo &&i this name. equals(pk. getNameo))i return true return false

...展开详情
试读 30P spring笔记
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
最新推荐
spring笔记 10积分/C币 立即下载
1/30
spring笔记第1页
spring笔记第2页
spring笔记第3页
spring笔记第4页
spring笔记第5页
spring笔记第6页

试读结束, 可继续读3页

10积分/C币 立即下载 >