教学内容立即检索策略延迟检索策略迫切左外连接检索策略每种检索策略的适用范围在程序中显式指定迫切左外连接检索策略CUSTOMERS表和ORDERS表中的记录运行Query的list()方法ListcustomerLists=session.createQuery("fromCustomerasc").list();假定采用立即检索策略,运行以上Query的list()方法时,Hibernate将先查询CUSTOMERS表中所有的记录。
目的:确定你将面临的一些问题时,特别是在企业环境中使用JDO,
1.@Entity实体2.@Id表示主键3.@Table(name=”tbl_sky”uniqueConstraints={@UniqueConstraint(columnNames={“month”,”day”})})类一级注解4.@Versionversion属性将映射到OPTLOCK列,EntityManager使用该字段来检测更新冲突,防止新的丢失。字段可以是numeric类型也可以是timestamp类型,hibernate支持任何类型,只要是该类型实现了UserVersionType5.所有非static非transient的属性都可以被持久化,除非将其注解为@Transient,所有没有定义注解的属性都等价于在其上添加了@Basic注解6.@Basic(fetch=FetchType.LAZY)这个是用来注解普通属性的,fetch指的获取策略,FetchType.LAZY是延迟获取。
课程介绍讲课内容Hibernate,JPA,JTA,POJO概念了解Log4j配置动手练会Junit配置动手练会主键生成策略重要组件映射不重要复合主键不重要核心开发接口重要对象关系映射重要继承映射不重要,知道有那几种就可以。 集合映射不重要,知道有哪几种CRUD重要,动手练会inverse级联操作延迟加载抓取策略树状结构(作业)重要HQL重要QBC、QBE不重要事务隔离级别、悲观锁,乐观锁理解一级缓存、二级缓存,查询缓存理解
MyBatis 世界上流行最广泛的SQL 映射框架,由Clinton Begin 在2002 年创建,其后,捐献给了Apache 基金会,成立了iBatis 项目。2010 年5 月,将代码库迁致Google Code,并更名为MyBatis。 MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC 代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、 Map 接口和POJO 到数据库记录。
假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM。Dapper的优势:<br> 1,Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll.<br> 2,Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。从目 前的开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。 <br> JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,图 1很好地描述了JPA的结构: Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合对ORM技术,实现天下归一。
第二章Hibernate API目标:HibernateAPI简介0Hinernate的体系结构(运行时)SessionFactory:它保存了对当前数据库配置的所有映射关系,它是将某个数据库的映射关系经过编译之后全部保存在内存中的。它还是生成Session的工厂,它在进行实例化的过程中将会用到ConnectionProvider。一个SessionFactory对应一个数据库连接,当数据库连接改变时需要修改SessionFactorySession:是进行持久化操作的基础,所有的持久化操作都是在Session的基础上进行的。它相当与JDBC中的Connection。
本章介绍了Hibernate的几种主要检索方式:HQL检索方式、QBC检索方式、SQL检索方式。HQL是Hibernate Query Language的缩写,是官方推荐的查询语言。QBC是Query By Criteria的缩写,是Hibernate提供的一个查询接口。Hibernate是一个轻量级的框架,它允许使用原始SQL语句查询数据库。HQL是Hiberante官方推荐的Hibernate检索方式,它使用类似SQL的查询语言,以面向对象的方式从数据库中查询。可以使用HQL查询具有继承、多态和关联关系的数据。在检索数据时应优先考虑使用HQL方式。
Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示。
用了写hibernate高级查询时用了Restrictions(当然Expression也是可以以的)这个类.感觉不错.下面的代码写的不易读.
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。 每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得。
使用hibernate Annotation来映射实体
当我们用HQL进行子查询的时候,如select * from Tree where pid in (select id from Tree,此时HIBERANTE就会报错,说什么*号错误之类的。但如果将*改为Tree类里的所有子段时就不会有问题了。就会像平时一样第一行数据返回一个Object[],然后你再根据Tree类里字段对Object[]数组里的值进行转换。这样一来比较麻烦。今天发现如果我SQL来查有一个方法可以返回一个对象的。
NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。 <br> NHibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,NHibernate可能不是最好的解决方案;对于那些在基于.NET的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,NHibernate是最有用的。不管怎样,NHibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。
一、Hibernate的优点Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用。hibernate为java提供了一个易用的,高效率的关系对象映射。它使用java反射机制,而不是字节码增强程序来实现透明性(hibernate中的ORMapping,就是用一个映射文件将数据库中的表与java中的类来进行关联。表中的字段对应了类中的属性。这样我们操作的是类,其实就是操作了数据库。这样就是透明性。
Hibernate的关联映射
使用Hibernate,通过简单的配置即可获得对象间关联的能力 常用的关联有one-to-many关联和many-to-one关联。many-to-many在特定场合下也会用到。
Hibernate API简介。SessionFactory:它保存了对当前数据库配置的所有映射关系,它是将某个数据库的映射关系经过编译之后全部保存在内存中的。 它还是生成Session的工厂,它在进行实例化的过程中将会用到ConnectionProvider。一个SessionFactory对应一个数据库连接,当数据库连接改变时需要修改SessionFactory
理解ORM 熟悉Hibernate 的作用