struts2和hibernate和spring学习笔记.doc

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
struts2和hibernate和spring学习笔记

hibernate学习笔记: 首先了解hibernate的配置文件,hibernate配置文件里面配置了与数据库打交道的一些信息,包括数据源,与一些数据库的相关类的配置,drivermanager等等,还设置了实体类与数据库表的映射,那么,在运行程序的时候,首先就要先加载hibernate的配置文件,整个hibernate的配置文件里面的内容首先包含在hibernate-configuration里面,其次,在hibernateconfiguration里面又包装了一层sessionfactory,那么当获得了hibernate-configuration之后,若要生成相应的实体类的表,就要导出相应的表,配置文件里面也配置了相应的语句,之后,若要对数据库表进行增删改查等操作,在获得了hibernate-configuration之后,就要建立一个相应的sessionfactory,当建立了sessionfactory之后,就要建立与数据库的会话机制,那就是在sessionfactory这个工厂里面打开一个session来保持这个通话。对数据库进行一些基本的操作。 采用session的load方法加载数据: 采用session的load方式加载数据,参数为相应的实体类,和对应的表中的id主键值,来加载相应的数据。session的load方法支持一级缓存,也就是session级缓存,当查询上来相应的数据时,如果再接着查询,则首先从session级缓存中查询看有没有相应的数据,如果有,就不去数据库存取,不发相应的sql语句。第二:session的load方法支持延迟加载,只有在真正用到数据的时候,load方法才去数据库查询相应的数据只有真正用到数据的时候才发sql语句。 采用session的get方法加载数据 session的get方法首先不支持延迟加载,当执行session的get方法时,不管是否用到数据,get方法都发出sql语句查询相应的数据,加载上来。同样的session的get方法和load方法一样,都支持一级缓存,都首先去缓存里读数据,如果有的话,直接加载数据,‘如果一级缓存中没有,那么发sql语句,去数据库中查找相应的数据。 在对数据库进行某些变动的处理时,如修改,删除等操作,一定要开启事务,保持数据的一致性 在做删除与修改数据库的时候,一定要开启事务的管理,因为事务保持了数据操作的一致性。而在查询加载数据的时候,并不需要开启事务,因为加载,查询数据,不对数据进行相应的修改操作无需一致性,而在修改,删除时一定要开启事务,以达到保持数据的一致性。 采用session的createQuery方法加载数据时: 查询单个的属性条件,采用直接根据条件查询,或者采用顺序占位符?来查询当采取顺序占位符?时,得调用query的setParameter的方法,其中里面的参数解释为:第一参数表示的是第一个问号的下标,如果为0,则表示为第一个?号,第二个参数为?的实际值,对应的是实体表中的某个字段的值,若第一个?代表的是id,那么第二个参数则是表中的id字段的某个值这样就能根据具体的值把相应的内容加载上来,这样加载上来的信息为一个list集合。除了采用顺序占位符才传递参数外,还可以使用引用占位符,引用占位符[:参数名],也就是给hql语句中的条件中的字段另起个别名而已,之后调用query的setParameter方法,参数表示为:第一个参数表示hql语句中的条件的别名,第二个参数为别名条件的值。根据这样就能把相应的数据加载上来。返回一个list集合 One2one唯一外键关联映射是多对一关联映射的特例可以采用many-to-one标签,指定多的一端的unique=true,这样就限制了多的一端的多重性为一,通过这种手段映射一对一唯一外键关联 例如一个人对应一个身份证号,在person一端配置 hibernate-mapping class name=com.bjsxt.hibernate.Person table=t_person id name=id generator class=native/ /id property name=name/ many-to-one name=idCard unique=true/ /class /hibernate-mapping idcard一端无需配置 One2one唯一外键双向关联映射,如上面例子需要在另一端(idcard),添加one-to-one标签,指示hibernate如何加载 其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person的外键维护的关系, 所以不能指定主键加载person,而要根据per

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档