2.hibernate 核心接口
来源:互联网 发布:日历记事软件 编辑:程序博客网 时间:2024/05/15 23:51
hibernate对jdbc API进行了封装,提供了更加面向对象的API。
public static void main(String[] args) throws Exception { //1.实例化Configuration Configuration conf = new Configuration().configure(); //2.实例化SessionFactory SessionFactory sf = conf.buildSessionFactory(); //3.实例化Session Session sess = sf.openSession(); //4.开始事务 Transaction tx = sess.beginTransaction(); //5.创建消息实例 News n = new News(); //6.设置消息标题和消息内容 n.setTitle("疯狂Java联盟成立了"); n.setContent("疯狂Java联盟成立了,网址是www.crazyit.org"); //7.保存消息 sess.save(n); //8.提交事务 tx.commit(); //9.关闭Session sess.close(); }
1.Configuration接口:
用于配置并启动hibernate。
Configuration类的主要作用是解析Hibernate的配置文件和持久化映射文件中的信息,然后通过Configuration对象的buildSessionFactory()方法创建SessionFactory对象,所以Configuration对象一般只有在获取SessionFactory对象时需要使用。当获取了SessionFactory对象之后,由于配置信息已经由Hibernate 维护并绑定在返回的SessionFactory中,因此该Configuration已无使用价值。
我们可以查看Configuration的源代码,它的configure()方法是这样实现的:
public Configuration configure() throwsHibernateException { configure("/hibernate.cfg.xml" );//此处指定了ORM文件的位置 return this; }
我们看到它是在这里指定了ORM文件的位置,这就是为什么Hibernate总是默认到classpath下去寻找hibernate.cfg.xml文件的原因了。实际上我们还可以通过configure(String resource)来动态的指定配置文件,只不过通常我们都是采用的默认设置罢了。这样的话我们的配置文件就都被读取了,同时配置文件中通过元素引入的映射文件也被读取了。
2.SessionFactory接口:
SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory**并不是轻量级**的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
SessionFactory有以下特点:
- 它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享。
- 它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用中只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每一个数据库创建一个单独的SessionFactory实例。
- 之所以称SessionFactory是重量级的,是因为它需要一个很大的缓存,用来存放预定义的sql语句及映射元数据等。用户还可以为SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的第二级缓存,该缓存用来存放被工作单元读过的数据,将来其他工作单元可能会重用这些数据,因此这个缓存中的数据能够被所有工作单元共享。一个工作单元通常对应一个数据库事务。
这个实例中有一个getCurrentSession()方法获得一个session。在老的api中我们也会用openSession方法获取session,这种方法现在不提倡再用了,因为他永远只会产生一个新的session,并且他需要你手动将其close掉,而getCurrentSession()方法在你这个session还没有提交之前你无论拿多少次,他始终都是同一个session,session一旦提交那再拿就是一个新的session了,也就是他首先会在上下文中去找session,如果没有找到就会新建一个新的session,并且他在提交完事务后自动close掉。
3.Session接口:
对于Hibernate开发人员来说是一个最重要的接口,被称为持久化管理器,提供了持久化的相关操作:保存、更新、删除、加载对象。Hibernate操作数据库之前必须先获取一个Session对象,相当于JDBC在操作数据库之前必须获取一个Connection对象一样。
获取Session对象后,Hibernate内部并不会获取操作数据库的java.sql.Connection对象,而是等待Session对象真正需要对数据库进行CRUD等操作时,才会从数据库连接池中获取java.sql.Connection对象。而关闭Session对象时,则是将java.sql.Connection对象返回到连接池中,而不是直接关闭java.sql.Connection对象。
Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。 session可以看作介于数据连接与事务管理一种中间接口。
4.Transaction接口:
Hibernate数据库事物接口。Transaction接口负责事务相关的操作,一般在Hibernate的增删改中出现,但是使用Hibernate的人一般使用Spring去管理事务。
5. Query接口:
是Hibernate的查询接口,用于向数据库查询对象以及控制执行查询的过程。Query实例包装了一个HQL(Hibernate Query Language)查询语句。HQL查询语句与SQL相似,HQL面向对象,引用类名和类的属性名,而不是表名和字段名。
参考:http://www.ibm.com/developerworks/cn/java/l-hibernate1/
- 2.hibernate 核心接口
- Hibernate核心接口简介
- hibernate核心接口
- Hibernate核心接口 (4.1)
- Hibernate的核心接口
- Hibernate核心接口
- hibernate核心接口
- Hibernate核心接口(转)
- hibernate核心接口
- hibernate的核心接口
- Hibernate-核心接口( 转)
- Hibernate核心接口简介
- Hibernate核心接口简介
- Hibernate核心接口简介
- Hibernate的核心接口
- 3. Hibernate核心接口
- hibernate 核心开发接口
- hibernate 核心接口
- Oracle-BPM(八)
- Oracle操作ORA-02289: 序列不存在 解决方案
- Android Studio 快捷键整理分享
- 如何在阿里云服务器里面添加端口
- 【POJ 3267】 The Cow Lexicon
- 2.hibernate 核心接口
- Java基础之简单投票程序
- java网络编程
- 如何有效的报告BUG
- 关于多线程输入参数和返回值的几种情况
- Haskell趣学指南学习日记(4)-强大的函数
- STM32W108无线射频模块外部中断接口应用实例
- 关于DOM的优化以及js的性能问题
- C - The C Answer (2nd Edition) - Exercise 1-4