- Hibernate中的核心接口与类
- Configuration类
- SessionFactory类
- Session类
- Transaction类
- Query接口
- Criteria接口
2. 使用MyEclipse可视化开发Hibernate的例子(略)
3. 设置Hibernate使用Tomcat的连接池
4. Hibernate使用C3P0连接池
Hibernate中的接口与类

根据上图的结构可以得出他们的依赖关系。
- Configuration类负责管理Hibernate的配置信息
1.Hibernate运行的底层信息:数据库的URL,用户名,用户密码,JDBC驱动类,数据库Dialect,数据库连接池等。
2. Hibernate配置文件默认为hibernate.cfg.xml,或者hibernate.properties
3.Hibernate映射文件(*.hbm.xml)
//1. new a configuraion instance
Configuration config = new Configuration();
//2.load the configure file
config.configure();
//3.get sessioonFactory,at this stage the configratino is useless.
SessionFactory sessionFactory = config.buildSessionFactory();
- SessionFactory(会话工厂)接口
1.会话工厂缓存了生成的SQL语句和一些数据
2.会话工厂在用用初始化时被创建,是一个重量级的类。通常情况下,整个应用只有唯一的一个会话工厂。
3 .使用Hibernate访问多个数据库,需要对每一个数据库使用一个会话工厂 。
4.应用程序从会话工厂里获得Session(会话)实例
//1. new a configuraion instance
Configuration config = new Configuration();
//2.load the configure file
config.configure();
//3.get sessioonFactory,at this stage the configratino is useless.
SessionFactory sessionFactory = config.buildSessionFactory();
- Session(会话)接口
1.Session也成为持久化管理,因为它是与持久化有关的操作接口
2.Session代表与数据库之间的一次操作。
3.Session通过SessionFactory打开,在所有的工作完成后,需要关闭。
4.会话并不是线程安全的,应该被设计为每次只能在一个线程中使用
//1. new a configuraion instance
Configuration config = new Configuration();
//2.load the configure file
config.configure();
//3.get sessioonFactory,at this stage the configratino is useless.
SessionFactory sessionFactory = config.buildSessionFactory();
//get session
Session session = sessionFactory.getCurrentSession();
save()方法
get()/load()方法
update()方法
delete()方法
- load()与get()方法的区别:
1. 使用load()方法,如果没有找到记录,就会抛出违例
2.使用get()方法,如果没有找到激励,返回Null
3. 两个方法对缓存对象的读取也不同
- Transaction(事务)接口
1.Transaction从底层的事务实现中抽象出来的接口
2.可能是一个JDBC事务或一个JTA事务,这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性
3.使用Hibernate进行操作时必须显示的调用Transaction
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
......
tx.commit();
session.close();
- Query接口
1.使用Query类型的对象可以方便我们对数据库进行查询操作,它使用 QBC,QBE,HQL或者原生SQL(Native SQL)对数据执行查询操作。
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from guestbook");
List list = query.list();
tx.commit();
- Criteria接口
1.Criteria接口与Query接口非常类似,它允许我们创建并执行面向对象方式的查询。
Configurain config = new Configuraion().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Criteria crit = session.CreateCriteria(GuestBook.class);
Criterion criterion1 = Restrictions.like("name","刘%");
crit.add(criterion1);
List list = crit.list();
tx.commit();
2. 使用MyEclipse可视化开发Hibernate的例子(略)
Exception in thread "main" org.hibernate.HibernateException: No CurrentSessionContext configured!
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:620)
at com.crazy.HibernateTest.main(HibernateTest.java:16)
发生一下异常时,是因为CurrentSession没有配置,所以不能使用getCurrentSession来获取Session。应该使用openSession来获取session。
No CurrentSessionContext configured!
3. Hibernate设置使用Tomcat中的连接池
- 修改Tomcat的context.xml
<Context reloadable="true"> <Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="scott" password="tiger" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:ora92"/> </Context>
- 修改一下Hibernate的配置文件
这种配置是针对Web应用程序,否则不可以这样配置。
<property name="connection.datasource">java:com/env/jdbc/oracleds</property>
- Hibernate设置使用c3p0连接池
首先添加C3P0的jar文件。
配置内容如下:
<!-- configuration of c3p0--> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="c3p0.max_size">10</property> <property name="c3p0.min_size">5</property> <property name="c3p0.timeout">10</property> <property name="c3p0.max_statements">10</property>
一篇关于c3p0配置信息的文章 : http://msq.iteye.com/blog/60387
本文深入介绍了Hibernate框架的核心组件,包括Configuration、SessionFactory、Session、Transaction等关键接口与类的功能及使用方法,并探讨了Hibernate如何与数据库连接池如Tomcat和C3P0集成。
4489

被折叠的 条评论
为什么被折叠?



