1、核心接口 (1) Configuration接口 Configuration 接口负责管理Hibernate 的配置信息。为了能够连上数据库必须配置一些属性,这些属性包括: 数据库URL 数据库用户 数据库用户密码 数据库JDBC驱动类 数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现。 /创建一个配置对象,读取配置文件/ Configuration config = new Configuration(); config.configure(“/hibernate.cfg.xml”); (2) SessionFactory接口 应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。这里用到了一个设计模式即工厂模式,用户程序从工厂类SessionFactory中取得Session的实例。SessionFactory不是轻量级的。它占的资源比较多,所以它应该能在整个应用中共享。一个项目通常只需要一个SessionFactory就够了,但是当项目要操作多个数据库时,必须为每个数据库指定一个SessionFactory。 会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。它也保存了在一个工作单元中读入的数据并且可能在以后的工作单元中被重用(只有类和集合映射指定了使用这种二级缓存时才会如此)的Session类。 /通过配置对象产生一个会话工厂/ SessionFactory factory=config.buildSessionFactory(); (3) Session接口 该接口是Hibernate使用最多的接口。 Session不是线程安全的,它代表与数据库之间的一次操作。Session是持久层操作的基础,相当于JDBC中的Connection。 然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。 Session通过SessionFactory打开,在所有的工作完成后,需要关闭。但如果在程序中,不断地创建以及销毁Session对象,则会给系统带来不良影响。所以有时需要考虑session的管理,合理的创建合理的销毁。 /通过工厂产生一个会话/ Session session=factory.openSession(); (4) Query类 Query类可以很方便地对数据库及持久对象进行查询,它可以有两种表达方式:查询语句使用HQL(HQL是Hibernate Query Lanaguage简称是Hibernate配备了一种非常强大的查询语言,类似于SQL)或者本地数据库的SQL语句编写。 /通过会话产生一个查询对象/ Query query = session.createQuery(“from Dept”); /通过查询对象查询数据库,返回集合/ List list = query.list(); for (int i = 0; i < list.size(); i++) { Dept dept = (Dept) list.get(i); System.out.println(dept.getDname()); } (5) Transaction接口(Demo.java) 如果你向数据库中增加数据或修改数据时,需要使用事务处理,这时你需要Transaction接口。 Transaction接口是对实际事务实现的一个抽象,该接口可以实现JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA事务等跨容器的事务。 之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移植。