Hibernate是一个面向Java环境的对象/关系数据库映射工具,用于把面向对象模型表示的对象映射到基于SQL的关系模型的数据结构中。
Hibernate不仅仅管理Java类到数据库的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
在ORM框架中有一个非常重要的媒介:PO(持久化对象)。持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增、删、改的操作—以面向对象的方式操作数据库。
应用程序无须直接访问数据库,甚至无须理会底层数据库采用何种数据库—这一切对应用程序全透明,应用程序只需创建、修改、删除持久化对象即可;与此同时,Hibernate则负责把这种操作转换为指定数据表的操作。
@Entity
@Table(name="news_inf")
public class News{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String title;
private String content;
}
@Entity注解声明该类是一个Hibernate的持久化类
@Table指定该类映射的表。此处指定该类映射到new_inf表
@Id 用于指定该类的标识属性。所谓标识属性,就是可以唯一标识该对象的属性,标识属性通常映射到数据表的主键列。
@GeneratedValue用于指定主键生成策略,其中strategy属性指定了主键生成策略为IDENTITY策略,也就是采用自动增长的
主键生成策略。
PO = POJO + 持久化注解
PO只有在Session的管理下才可完成数据库访问。为了使用Hibernate进行持久化操作,通常有如下步骤:
- 开发持久化类,由POJO + 持久化注解组成。
- 获取Configuration。
- 获取SessionFactory。
- 获取Session,打开事务。
- 用面向对象的方式操作数据库。
- 关闭事务,关闭Session。
对PO的操作必须在Session管理下才能同步到数据库。Session由SessionFactory工厂产生,SessionFactory是数据库编译后的内存镜像,通常一个应用对应一个SessionFactory对象。SessionFactory对象由Configuration对象生成,Configuration对象负责加载Hibernate配置文件。
创建Configuration对象
Configuration实例的唯一作用是创建SessionFactory实例。
Configuration对象提供了一个buildSessionFactory()方法,该方法可以产生一个不可变的SessionFactory对象。
另一种方式是,先实例化Configuration实例,然后再添加Hibernate持久化类。Configuration对象可调用addAnnotatedClass()方法逐个添加持久化类,也可调用addPackage()方法添加指定包下的所有持久化类。
使用hibernate.cfg.xml作为配置文件创建Configuration对象:
Configuration cfg = new Configuration().configure();
通过new关键字创建Configuration对象之后,不要忘记调用configure()方法。
hibernate.cfg.xml文件中配置基本属性常用的有:
- 方言
- 显示和格式化sql语句
- 创建数据表的策略
- 二级缓存