第一章ORM概述目标:•理解ORM•熟悉Hibernate的作用软件分层的优点1.伸缩性2.可维护性3.可扩展性4.可重用性5.可管理性Hibernate是一个优秀的持久化框架什么是持久化?内存姓名:张三密码:123性别:男磁盘用JDBC完成数据在持久和瞬时状态间的转换:…***.execute(…)...瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态持久状态:保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持久状态持久化:将程序数据在瞬时状态和持久状态之间转换的机制ActionServerDaoDB用JDBC持久数据Hiberante应用程序的结构(1)Application:应用(2)PersistentObject:持久化对象(3)hibernate.properties:Hibernate属性文件/Hibernate配置文件(4)XMLMapping:Hibernate映射文件(5)Database:数据库JDBC与Hibernate的比较相同点:•两者都是JAVA的数据库操作中间件。•两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。•两者都可以对数据库的更新操作进行显式的事务处理。不同点:•使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernatequerylanguage)语言•操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。•数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。•什么是ORM?对象数据(O)name:张三sex:男pw:123User对象持久化层业务逻辑层表现层关系型数据(R)映射信息ORM(对象-关系映射):完成对象数据到关系型数据映射的机制称为对象-关系映射,简称ORM。类:User表:TBL_User属性字段nameuser_namesexuser_sexpwuser_pwTBL_User小结•是一个主流的持久化框架–在JDBC基础上进行分装–只需要少量代码就可以完成持久化工作•是一个优秀的ORM(对象-关系映射)机制–通过映射文件保存映射信息–在业务层以面向对象的方式编程,不用考虑数据保存形式3个准备1)添加Hibernate库到项目2-1):添加配置文件--hibernate.cfg.xmlsession-factorypropertyname=connection.urljdbc:microsoft:sqlserver://localhost:1433;Database=pubs/propertypropertyname=connection.usernamesa/propertypropertyname=connection.passwordpwd/propertypropertyname=connection.driver_classcom.microsoft.jdbc.sqlserver.SQLServerDriver/propertypropertyname=dialectorg.hibernate.dialect.SQLServerDialect/propertypropertyname=show_sqltrue/propertymappingresource=com/aptech/jb/entity/User.hbm.xml//session-factory2-2):添加配置文件--hibernate.cfg.xml•session-factorypropertyname=dialectorg.hibernate.dialect.SQLServerDialect/propertypropertyname=connection.datasourcejava:/comp/env/pubs/propertypropertyname=session_factory_namehibernate/propertymappingresource=com/aptech/jb/entity/User.hbm.xml/•/session-factory准备3:添加实体类和映射文件(UserInfo.hbm.xml)7、关闭Session6、提交事务5、持久化操作save/update/delete/find4、开始一个事务3、打开Session1、Configuration2、创建SessionFactory使用Hibernate的7个步骤:ConfigurationSessionFactorySessionTransaction创建创建开始savedeleteupdategettx.commit()session.close()执行Hibernate.cfg.xmlFWXX.cfg.xmlUser.hbm.xml结束创建和销毁都相当耗费资源,通常一个系统内一个数据库只创建一个类似于JDBC中的Connection复杂的查询操作稍后介绍Sessionsession=sf.openSession();Useruser=(User)session.get(User.class,id);session.close();System.out.println(user.getUname()+,+user.getUpass());根据主键加载tx=session.beginTransaction();Useruser=this.testLoad(id);user.setUname(newName);session.update(user);tx.commit();修改tx=session.beginTransaction();Useruser=this.testLoad(id);session.delete(user);tx.commit();没有更新数据,不进行事务控制使用Hibernate实现:配置Hibernate关联自动加载区县对应的街道配置Hibernate关联并实现:1、增加一个公司:“CSTP”2、增加CSTP下属的三个部门3、删除“教学”4、划“财务”到红旗渠5、删除红旗渠–配置Hibernate多对多关联,实现某OA系统项目和人员对照关系的管理