如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
一.对象语言和操作数据库不匹配:模型不匹配(阻抗不匹配)①.可以使用JDBC手动转换;sql参数和jdbc中用对象赋值②.使用ORM(ObjectRelationMapping对象关系映射)框架:hibernate二.Hibernate安装配置①.配置文件Hibernate.cfg.xml和Hibernate.properties②.映射文件xxx.hbm.xml:对象模型和关系模型的映射三.开发流程1.由DomainObject->mapping->db2.有DB开始,用工具生成mapping和DomainObject3.由配置文件开始四.DomainObject限制1.默认的构造方法(必须的)2.有无意义的标示符id(主键)可选3.非final的,对懒加载有影响可选ConfigurationSessionFactorySessionTransactionQueryCriteriaConfiguration类Configuration类负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。SessionFactory接口SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了HYPERLINK"http://baike.baidu.com/view/1306799.htm"\t"_blank"工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Session接口Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与HYPERLINK"http://baike.baidu.com/view/1088.htm"\t"_blank"数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是HYPERLINK"http://baike.baidu.com/view/2442531.htm"\t"_blank"Session对象是非HYPERLINK"http://baike.baidu.com/view/1298606.htm"\t"_blank"线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。Transaction接口Transaction接口负责HYPERLINK"http://baike.baidu.com/view/121511.htm"\t"_blank"事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码Query和Criteria接口Query和Criteria接口负责执行各种HYPERLINK"http://baike.baidu.com/view/1088.htm"\t"_blank"数据库查询。它可以使用HQL语句或SQL语句两种表达方式。1.get和load方法的区别load/get方法均可以根据指定的实体类和id从数据库中读取记录,并返回与之对应的实体对象。load返回的是代理对象,不会返回空值;get方法返回实体类;load方法可以充分利用内部缓存和二级缓存中现有的数据,而get方法仅仅在内部缓存中进行数据查找,如没有发现对应的数据将越过二级缓存,直接调用sql完成数据读取。2.save方法和persist的区别save方法在保存的时候如果不开启事务,数据会插入数据库,然后事务回滚;persist方法在保存时如果不开启事务,不会插入数据库数据;3.对象状态:通过与session和数据库的关系判断状态①.瞬时(transient):new出来的对象,跟session和数据库没有关系,垃圾回收器会自动回收。②.持久(persistent):session内部对象,与数据库对应,数据库中的数据发生变化session会知道。③.脱管(detached):不在session内部,与数据库中有对应,数据发生变化session不会知道。脱管状态下的数据想更新数据必须调用update语句更新数据库。处于持久态的对象也称为PO(PersistenceObject),瞬时对象和脱管对象也称为VO(Valu