您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 03Hibernate核心API
—高级软件人才实作培训专家!北京传智播客教育—高级软件人才实作培训专家!北京传智播客教育(重点)ConfigurationSessionFactorySessionTransactionQueryCriteriaSQLQuery—高级软件人才实作培训专家!北京传智播客教育Configuration对象用于封装Hibernate的配置信息,在Hibernate框架启动后,需要装载对应的配置文件。Hibernate的配置文件有两种格式hibernate.cfg.xml文件(常用格式)hibernate.properties文件(早期格式)—高级软件人才实作培训专家!北京传智播客教育使用hibernate.cfg.xml加载配置Configurationconf=newConfiguration.configure();此方式可以将资源文件通过XML配置的方式加入配置文件资源文件配置方式添加配置文件(主流)mappingresource=cn/itcast/h3/user/vo/UserModel2.hbm.xml/添加持久化类(非主流)mappingclass=cn.itcast.h3.user.vo.UserModel/该方式需要基于注解格式—高级软件人才实作培训专家!北京传智播客教育(了解)使用hibernate.properties加载配置Configurationconf=newConfiguration();此方式无法配置资源文件,必须手动添加资源文件添加方式添加配置文件(非主流)conf.addResource(“cn/itcast/h3/user/vo/UserModel.hbm.xml”);添加持久化类(非主流)conf.addClass(UserModel.class);此方式Hibernate会自动读取当前类所在目录下同名的配置文件,UserModel.hbm.xml,所以在进行配置文件的命名时尽量保持两个文件名相同,不推荐使用不同名称的文件—高级软件人才实作培训专家!北京传智播客教育SessionFactory对象根据Configuration对象加载的配置信息创建得到,其中封装了配置信息中有关数据库的信息、所有的映射关系及预定义SQL语句SessionFactory对象是线程安全的SessionFactory对象可以通过Configuration对象获得Configurationconf=newConfiguration().configure();SessionFactorysf=conf.buildSessionFactory();由于SessionFactory对象的创建需要基于所有的配置信息,因此创建此对象需要消耗大量的资源,通常一个应用程序中只初始化一个SessionFactory对象—高级软件人才实作培训专家!北京传智播客教育(重点)Session对象是Hibernate与应用程序APP进行交互的桥梁,应用程序与Hibernate之间通过Session进行数据交互,其功能相当于JDBC中的ConnectionSession对象可以通过SessionFactory对象获得Sessions=sf.openSession();Session对象描述的是一次Hibernate与APP的会话信息,因此Session对象是线程不安全的。在使用时要保障该对象只出现在方法内部,而不要共享Session对象操作完成后要进行关闭s.close();—高级软件人才实作培训专家!北京传智播客教育Session对象位于应用程序与数据库之间,应用程序需要持久化的对象交由Session传递给数据库,应用程序需要获取数据库的信息也同样是从Session对象处获取,Session对象可以看做是一个数据调度中心Java应用程序Application数据库DBHibernateSession操作对象查询结果—高级软件人才实作培训专家!北京传智播客教育工具类的制作—高级软件人才实作培训专家!北京传智播客教育(重点)Transaction对象描述Hibernate执行过程中事务对象数据库操作中事务是保障数据操作成功的重要因素事务操作主要包含以下几种开启事务Transactiont=s.beginTransaction();提交事务t.commit();回滚事务t.rollback();—高级软件人才实作培训专家!北京传智播客教育常用操作(重点)插入数据save(Object)persist(Object)删除数据delete(Object);修改数据update(Object)saveOrUpdate(Object)查询单条数据get(Class,Serializable)load(Class,Serializable)—高级软件人才实作培训专家!北京传智播客教育(Objectobject)—高级软件人才实作培训专家!北京传智播客教育(Objectobject)—高级软件人才实作培训专家!北京传智播客教育(Objectobject)—高级软件人才实作培训专家!北京传智播客教育(Objectobject)—高级软件人才实作培训专家!北京传智播客教育查询单条数据查询单条数据需要根据主键进行查找,并且要明确查找的数据最终包装成的对象类型,使用反射完成Objectget(Classclass,Serializableid)Objectload(Classclass,Serializableid)—高级软件人才实作培训专家!北京传智播客教育数据查询Hibernate在进行数据查询时,会根据查询时所提供的Class模型,基于反射原理将对象自动封装成Java对象,与JSP技术中的JavaBean十分相似查询数据无需开启事务load方法与get方法的区别(后面详细讲解)—高级软件人才实作培训专家!北京传智播客教育(重点)Query对象描述了用于进行查询操作的对象,Query对象执行查询操作需要使用HQL语言。Query对象通过Session对象获得Queryq=s.createQuery(fromUserModel);其中“fromUserModel”使用的就是HQL语言的语法规则HQL语言是Hibernate框架中根据SQL语言发展得到的一种面向对象操作格式的查询语句,是Hibernate中主流的查询方式之一。—高级软件人才实作培训专家!北京传智播客教育语句HQL(HibernateQueryLanguage)是一种Hibernate专用的查询语句,基于面向对象的模式,将SQL语句转化成对象的操作格式HQL与SQL区别(SQL)select*fromtbl_user(HQL)selectumfromUserModelum(HQL简化)fromUserModel(SQL)selectuser.agefromtbl_useruser(HQL)selectum.agefromUserModelum—高级软件人才实作培训专家!北京传智播客教育别名HQL书写过程中,如果类名过长,或者属性名过长,可以通过别名的方式简化书写,同时可以描述查询的结果为对象类型别名使用规则与SQL完全相同,as可以省略“selectum.agefromUserModelasum”(正确)“selectum.agefromUserModelum”(正确)“selectagefromUserModelum”(正确)“selectum.agefromUserModel”(错误)—高级软件人才实作培训专家!北京传智播客教育查询数据步骤:获得Session对象编写HQL语句(字符串格式)由Session对象创建执行查询操作的Query对象,并传入HQL语句作为参数HQL语句编写时应满足预编译SQL的语法格式如果HQL语句中有参数,为Query对象指定操作的参数执行Query对象的数据列表方法获得查询结果q.list();q.uniqueResult();—高级软件人才实作培训专家!北京传智播客教育查询多条数据使用list()获得查询结果list方法用于获得查询数据结果为0到多条的情况list方法执行得到List集合,其中封装了查询的结果—高级软件人才实作培训专家!北京传智播客教育查询多条数据—高级软件人才实作培训专家!北京传智播客教育查询得到单条数据使用uniqueResult()获得查询结果uniqueResult方法用于获得查询数据结果为0到1条的情况uniqueResult方法执行后得到对象,其中封装查询的结果注意:如果查询结果超过一条,将抛出异常org.hibernate.NonUniqueResultExceptionquerydidnotreturnauniqueresult:15—高级软件人才实作培训专家!北京传智播客教育查询得到单条数据—高级软件人才实作培训专家!北京传智播客教育查询的数据模型使用Query对象进行查询,根据查询的内容不同,返回的数据模型也不同查询单个属性,返回查询对象的类型selectumfromUserModelum(返回类型为UserModel)selectagefromUserModel(返回类型为Integer)selectuserNamefromUserModel(返回类型为String)查询多个属性(投影),返回对象数组Object[]selectuserName,agefromUserModel返回对象数组,其中第一个元素是查询的userName数据,第二个元素是查询的age数据selectage,userNamefromUserModel(是否和上面相同?)—高级软件人才实作培训专家!北京传智播客教育查询单个属性—高级软件人才实作培训专家!北京传智播客教育查询多个属性(投影)—高级软件人才实作培训专家!北京传智播客教育进行分页查询Query对象可以对查询结果进行局部获取,也就是JEE中常用的“分页查询”结果Query对象进行查询数据局部获取设定查询的第一条数据编号q.setFirstResult(int);设置查询结果保留索引从第10条开始的数据设定查询的数据总量q.setMaxResults(int);设置查
本文标题:03Hibernate核心API
链接地址:https://www.777doc.com/doc-1084773 .html