Configuration:用于配置和启动hibernate,然后可以创建出SessionFactory。
SessionFactory:作为产生session的工厂,一个SessionFactory实例代表一个数据库存储源,如果要访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory实例。它是重量级的,内部有很多缓存,不可随意创建和销毁。
Session:用于增删改对象。
Transaction:用于事务的功能。
Query和Criteria:用于查询数据。
public class HibernateDaoImpl implements HibernateDao{
private SessionFactory sessionFactory;
public HibernateDaoImpl(){
Configuration config=new Configuration();
config.addClass(Customer.class);
sessionFactory=config.buildSessionFactory();
}
@Override
public Session getSession() {
return sessionFactory.openSession();
}
}
其中代码中的config.addClass(Customer.class),是加载domain与数据库的映射关系的xml文件
config.buildSessionFactory(),是build一个SessionFactory,但是config.buildSessionFactory()传空参的方法是过时的,目前一般是buildSessionFactory(serviceRegistry)
但是:
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
创建serviceRegistry的ServiceRegistryBuilder也是过时的,所以一般推荐以下写法来创建serviceRegistry
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
最后我们就可以创建我们的sessionFactory了
sessionFactory=config.buildSessionFactory(serviceRegistry);