(1) 在eclipse中创建一个java application,项目名称为HibernateSample。在项目目录下创建一个文件夹lib,用来存放相应的库文件。 (2) 下载软件包 Hibernate,Hibernate-extention,Middlegen-Hibernate,junit以及相应的数据库驱动程序。(本例采用oracle,不需要下载驱动程序,驱动程序位于安装目录中,复制就可以了 F:\oracle-10g-express-edition\app\oracle\product\10.2.0\server\jdbc) (3) 将上述软件包解压到项目的类库目录lib下。
Hibernate对其持久化对象实现了缓存管理,来提高系统性能,Hibernate支持两级缓存管理,一级缓存是由Session提供的,因此它只存在于Session的生命周期中,是Session所内置的,不能被卸载。
实体对象之间一对一的关联是通过数据库的外键实现的 外键的使用有以下两种方式 主键关联 不需要借助额外字段,直接通过两个表的主键来关联,两表中相关联的记录要使用相同的主键值 唯一外键关联 某个表的外键字段关联到另一个表的主键字段上,是多对一关联的特例
Hibernate的持久化类和关系数据库之间的映射通常是用一个XML文档来定义的。该文档通过一系列XML元素的配置,来将持久化类与数据库表之间建立起一一映射。这意味着映射文档是按照持久化类的定义来创建的,而不是表的定义。
在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态 Hibernate的对象有三种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
说明:展现层:提供与用户交互的界面。业务逻辑层:实现各种业务逻辑。数据访问层:负责存放和管理应用程序的持久化业务数据。数据访问层与Hibernate在Java应用程序中的角色数据访问层(持久化层)封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标:代码重用性高,可完成所有的数据访问操作。
Java访问数据库最原始的方法是通过JDBC来完成的。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC是J2EE标准的一部分,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
HQL:Hibernate Qusery Language,如果你已经熟悉它,就会发现它跟SQL非常相像。不过 你不要被表面的假象迷惑,HQL是面向对象的(OO,用生命的眼光看待每一个对象,他们是如此 鲜活)。如果你对JAVA和SQL语句有一定了解的话,那么HQL对你简直易如反掌,你完全可以利用在公车上的时间掌握它。
iBatis是个像Hibernate, JDO,EJB一类的数据持久框架,它能将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库.
flex+hibernate开发环境的搭建
Hibernate内部封装了JDBC(Java Database Connector)、JTA(Java Trasaction API)、JNDI(Java Naming and Directory Interface)。我们只要提供JDBC驱动程序就可以通过Hibernate访问任何数据库系统。
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层SQL映射框架(半ORM框架)。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录,摒除了大部分的JDBC代码、手工设置参数和结果集重获。
ORM(Object Relational Mapping)---是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说:ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。
Hibernate+struts2+spring 实现分页实例
NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。<br> NHibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,NHibernate可能不是最好的解决方案;对于那些在基于.NET的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,NHibernate是最有用的。不管怎样,NHibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。
Mybatis简单例子
瞬时对象(Transient Objects):使用new操作符初始化的对象不是立刻就持久化的。他们的状态是瞬时的,也就是说他们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其他对象所引用),他们的状态将会丢失,并由垃圾回收机制回收。 临时对象的特征。临时对象具有以下特征
HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。
iBATIS3.0和以前的版本有一些改变,不过学过以前版本的再学习3.0应该不是太难,3.0要求JDK1.5支持,因为其中增加了注解和泛型,这些都是JDK1.5才有的。好了废话不多说,先来利用iBATIS3做下简单的增删改查吧。
编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao。查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考。