cas是什么?
CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。相关信息:CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录。于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址。并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份核实,以确保 Service Ticket 的合法性。
casa是什么意思?
casa ['kɑ:sə]n.[美国西南部方言]土坯房子,住宅。英语(英文:English)是一种西日耳曼语支,最早被中世纪的英国使用,并因其广阔的殖民地而成为世界使用面积最广的语言。英国人的祖先盎格鲁部落是后来迁移到大不列颠岛地区的日耳曼部落之一,称为英格兰。这两个名字都来自波罗的海半岛的Anglia。该语言与弗里斯兰语和下撒克森语密切相关,其词汇受到其他日耳曼语系语言的影响,尤其是北欧语(北日耳曼语),并在很大程度上由拉丁文和法文撰写。主条目:古英语英语的最早形式被称为古英语或盎格鲁撒克逊语(公元550-1066年)。古英语是由一组北海日耳曼方言发展而成的,这些方言最初是由日耳曼部落(称为角羚,撒克逊人和黄麻)在弗里西亚,下萨克森,日德兰和瑞典南部沿海地区所说的。从公元5世纪CE,盎格鲁-撒克逊人定居英国的罗马经济,行政崩溃。到了7世纪,盎格鲁撒克逊人的日耳曼语在英国占据了主导地位,取代了罗马不列颠的语言(43-409 CE):古布立吞语,一个凯尔特语和拉丁语,被带到英国罗马人占领。
Hibernate中cascade作用
只有 关系标记 才有cascade属性 一个操作因级联cascade可能触发多个关联操作 前一个操作叫 主控操作 后一个操作叫 关联操作 cascade属性的可能值有 all: 所有情况下均进行关联操作 即save update和delete none: 所有情况下均不进行关联操作 这是默认值 save update: 在执行save/update/saveOrUpdate时进行关联操作 delete: 在执行delete 时进行关联操作 all delete orphan: 当一个节点在对象图中成为孤儿节点时 删除该节点 比如在一个一对多的关系中 Student包含多个book 当在对象关系中删除一个book时 此book即成为孤儿节点 级联(cascade)属性的作用 级联指的是当主控方执行操作时 关联对象(被动方)是否同步执行同一操作 pojo和它的关系属性的关系就是 主控方 被动方 的关系 如果关系属性是一个set 那么被动方就是set中的一个一个元素 比如 学校(School)有三个属性 地区(Address) 校长(TheMaster)和学生(Set 元素为Student) 执行session delete(school)时 级联决定是否执行session delete(Address) session delete(theMaster) 是否对每个aStudent执行session delete(aStudent) 具体执行什么 关联操作 是根据 主控操作 来的 主控操作 关联操作 session saveOrUpdate > session saveOrUpdate (执行saveOrUpdate实际上会执行save或者update) session save > session saveOrUpdate session udpate > session saveOrUpdate session delete > session delete 主控操作和关联操作的先后顺序是 先保存one 再保存many 先删除many 再删除one 先update主控方 再update被动方 对于one to one 当其属性constrained= false (默认值)时 它可看作one to many关系 当其属性constrained= true 时 它可看作many to one关系 对many to many 它可看作one to many 比如 学校(School)有三个属性 地区(Address) 校长(TheMaster 其constrained= false )和学生(Set 元素为Student) 当执行session save(school)时 实际的执行顺序为 session save(Address); session save(school); session save(theMaster); for( 对每一个student ){ session save(aStudent); } 当执行session delete(school)时 实际的执行顺序为 session delete(theMaster); for( 对每一个student ){ session delete(aStudent); } session delete(school); session delete(Address); 当执行session update(school)时 实际的执行顺序为 session update(school); session saveOrUpdate(Address); session saveOrUpdate(theMaster); for( 对每一个student ){ session saveOrUpdate(aStudent); } 注意 update操作因级联引发的关联操作为saveOrUpdate操作 而不是update操作 saveOrUpdate与update的区别是 前者根据操作对象是保存了还是没有保存 而决定执行update还是save extends: 实际中 删除学校不会删除地区 即地区的cascade一般设为false 另外 many to many关系很少设置cascade=true 而是设置inverse=false 这个反映了cascade和inverse的区别 见 cascade的默认值为false 所以inverse属性默认会进行 关联更新 总结 级联(cascade)就是操作一个对象时 对它的属性(其cascade=true)也进行这个操作 inverse和cascade的比较 这两个属性本身互不影响 但起的作用有些类似 都能引发对关系表的更新 inverse只对set+one to many(或many to many)有效 对many to one one to one无效 cascade对关系标记都有效 inverse对集合对象整体起作用 cascade对集合对象中的一个一个元素起作用 如果集合为空 那么cascade不会引发关联操作 比如将集合对象置为null school setStudentSet(null) inverse导致hibernate执行:udpate STUDENT set SCHOOL_ID=null where SCHOOL_ID=? cascade则不会执行对STUDENT表的关联更新 因为集合中没有元素 再比新增一个school session save(school) inverse导致hibernate执行 for( 对(school的每一个student ){ udpate STUDENT set SCHOOL_ID=? where STUDENT_ID=? //将学生的school_id改为新的school的id } cascade导致hibernate执行 for( 对school的每一个student ){ session save(aStudent); //对学生执行save操作 } extends:如果改变集合中的部分元素(比如新增一个元素) inverse: hibernate先判断哪些元素改变了 对改变的元素执行相应的sql cascade: 它总是对集合中的每个元素执行关联操作 (在关联操作中 hibernate会判断操作的对象是否改变) 两个起作用的时机不同 cascade 在对主控方操作时 级联发生 inverse: 在flush时(mit会自动执行flush) 对session中的所有set hibernate判断每个set是否有变化 对有变化的set执行相应的sql 执行之前 会有个判断 if( inverse == true ) return; 可以看出cascade在先 inverse在后 inverse 对set + one to many 和 set + many to many 起的作用不同 hibernate生成的sql不同 对one to many hibernate对many方的数据库表执行update语句 对many to many hibernate对关系表执行insert/update/delte语句 注意不是对many方的数据库表而是关系表 cascase 对set都是一致的 不管one to many还是many to many 都简单地把操作传递到set中的每个元素 所以它总是更新many 方的数据库表 建议 只对set + many to many设置inverse=false 其他的标记不考虑inverse属性 都设为inverse=true lishixinzhi/Article/program/Java/ky/201311/28820