普通用户注册hibernate配置.pptx
S2SH轻量级框架技术-S2SH应用基础,任务内容,软件的模型,在软件开发领域,模型用来表示真实世界的实体。在软件开发的不同阶段,需要为目标系统创建不同类型的模型:在分析阶段,需要创建概念模型。在设计阶段,需要创建域模型和数据模型。,购物网站应用的概念模型,概念模型用来模拟问题域中的真实实体,以及实体之间的关系。,数据模型,关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,域模型,域模型是面向对象的。在面向对象术语中,域模型也可称为设计模型。域模型由以下内容组成:域对象可以代表业务领域中的人、地点、事物或概念域对象之间的关系关联(聚集)依赖继承(一般化),域模型示例,域模型与关系模型,域模型和关系模型都分别建立在概念模型的基础上。域模型是面向对象的,而关系数据模型是面向关系的。对象模型与关系模型的对应关系(ORM),域对象的持久化,域对象的持久化把域对象永久保存到数据库中广义的持久化增、删、改、查,Java对象持久化方式,基于Java的对象持久化方式主要有以下三种:序列化技术XML技术数据库技术数据库技术发展阶段:层次型、网状型、关系型、对象型实现方式:使用SQL/JDBC手工编写持久层对象关系型数据库映射,使用JDBC的持久化,JDBC持久化,向表中插入一条“学生”的记录,JDBC持久化,使用JDBC API,手工编写维护持久化的JDBC代码,O-R关系通过Java代码和SQL语句体现,使用ORM的持久化,Application,JDBC,Database,ORM,Customer,O-R映射文件,ORM:对象-关系映射(Object-Relation Mapping)Java对象到关系数据库表的自动持久化使用元数据描述Java对象和数据库表间的映射关系,ORM持久化,使用ORM的API,O-R关系在映射文件中体现,持久化由ORM软件自动维护,ORM面临问题,ORM面临的问题:数据类型转换粒度问题对象的标识对象的继承与多态对象的关联,Hibernate的优势,Hibernate的优势:商业级支持的开源产品使用简单完善而全面的解决方案专业打造的优秀性能符合面向对象的思想提高开发效率更好的可维护性,Hibernate持久化代码示例,CS_Student stu=new CS_Student();stu.setId(id);stu.setName(李四);stu.setEmail();tran=session.beginTransaction();/开启事务session.save(stu);mit();/提交事务,Hibernate简介,Hibernate是什么连接Java应用程序和关系数据库的中间件对JDBC API进行了封装,负责Java对象的持久化在分层的软件架构中位于持久层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射,Hibernate的配置文件,Hibernate的配置文件分为两种:Hibernate本身的配置信息POJO的映射配置(XML或注解),Hibernate的自身的配置,配置数据源非容器管理容器管理配置SQL方言可选属性,POJO的映射配置,XML形式的配置注解形式的配置,加载配置文件的两个核心类,支持XML配置方式支持注解方式,是Configuration的子类,Configuration,Configuration类的作用是加载Hibernate的配置文件。使用configure()方法加载。它提供了一系列的方法用于将配置文件中的信息装入到Hibernate中。Hibernate支持使用properties文件和XML文件两种方式配置Hibernate。能够自动加载POJO的XML映射配置信息。,AnnotationConfiguration,与Configuration功能一样,是Configuration的子类。能够自动加载定义在POJO中的注解映射配置信息。,SessionFactory,Configuration类的buildSessionFactory()方法可以产生一个SessionFactory类型的对象。SessionFactory是一个不可改变的、线程安全的、重量级的对象。一般在一个系统运行过程中始终使用一个SessionFactory对象。是产生Session对象的工厂。,Session,Session对象是Hibernate系统中使用最频繁的接口。它为应用程序提供了通用的数据访问方法。通过SessionFactory接口的openSession()方法可以得到一个Session对象。Session对象是轻量级的,生成和销毁占用的内存较少。Session对象内建了缓存,可以存放实体对象。Session对象不是线程安全的。,安装与配置hibernate(配置文件),1、下载hibernate4在中找到需要的hibernate版本。,安装与配置hibernate(配置文件),2、复制jar包复制在lib/required下的所有jar包到项目的lib文件夹下,安装与配置hibernate(配置文件),3、部署与相应的pojo 的XXX.hbm.xml(注解方式不需要hbm文件)在项目的src目录下新建文件。,安装与配置hibernate(配置文件),4、在domain包下添加相应的pojo映射文件,并且将hbm文件在cfg文件中注册,参见前面图中最后部分的内容5、测试运行,安装与配置hibernate(注解),第一步,第二步,第三步与配置文件的方式相同,安装与配置hibernate(注解),4、hibernate.hbm.xml文件中把引改为引用实体类即把:改为:,安装与配置hibernate(注解),注解方式不需要在把实体类与表进行映射。而采用在实体类中进行注解。注意:(1):如果实体类属性名与表字段名不一致的时候,要么都注解在属性前,要么都注解在get方法前。不能部分注解在属性前,部分注解在方法前。(2):如果实体类属性名与表字段名一致的时候,可以部分注解在属性前,部分注解在方法前。,安装与配置hibernate(注解),(3):如果在实体类中某些属性不注解:(属性和get都不写注解),默认为表字段名与实体类属性名一致。(4):如果实体类的某个成员属性不需要存入数据库中,使用Transient进行注解就可以了。即类似于:配置中的某些字段不写(就是不需要对这个成员属性进行映射)(5):表名称可以在实体类前进行注解。(6):所有这些注解在:javax.persistence包下。而不是在hibernate包中。,安装与配置hibernate(注解),安装与配置hibernate(注解),5、hibernate4之后sessionfactory的获取变成了同样的获取方式,课后项目任务,1、搭建Hibernate框架下的项目必作题,