Hibernate用法十分简单,当我们在Java项目中引入Hibernate框架之后,就能以面向对象的方式来操作关系数据库了。
下载:
登陆Hibernate官网,下载Hibernate压缩包,windows平台下载.zip包,Linux平台下载.tar包。
解压压缩包,可以看到如下目录结构:
documentation:该路径下存放Hibernate的相关文档,包括Hibernate的参考文档和API文档等。
lib:该路径下存放Hibernate 编译和运行所依赖的第三方类库 其中require目录中是必需的jar包。
project:该路径下存放了Hibernate各种相关项目的源代码。
由于Hibernate底层依然是基于JDBC的,因此在应用程序中使用Hibernate执行持久化时,一定少不了对应数据库的JDBC驱动包。
Hibernate的数据库操作:
在所有的ORM框架中都有一个什么重要的媒介:PO(Persistent Object) 持久化对象。Hibernate是低侵入式的设计,完全采用普通的Java Bean对象来作为持久化对象
使用。该持久化对象的类 不需要继承任何的父类,或者实现任何的接口。
Hibernate的XML文件有两类:映射文件和配置文件
映射文件:
文件名:XXXX.hbm.xml (若干)
映射文件完成持久化类和数据库表,持久化类属性(Field)与数据库表列字段之间的对应关系。
配置文件:
文件名;hibernate.cfg.xml (一个)
配置文件完成连接哪个数据库,连接数据库的用户名和密码,以及连接数据库时使用的连接池,以及要使用的映射文件。
Hibernate的配置文件默认文件名是hibernate.cfg.xml,当程序调用Configuration对象的configure()方法时,Hibernate会自动加载该文件。
持久化操作代码:
public class NewsManager
{
public static void main(String[] args)
{
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session sess = sf.openSession();
Transaction tran = sess.beginTransaction(); News new = new News();
new.setTitle("Hibernate");
new.setContent("First Hibernate Demo"); sess.save(new);
tran.commit();
sess.close();
sf.close(); }
}
持久化类:
public class News
{
private Integer id;
private String title;
private String content;
//id属性的setter和getter方法
.....
//title属性的setter和getter方法
......
//content属性的setter和getter方法
...... }
所以完成一次持久化操作,大概有如下步骤:
1.开发持久化类 , 配置映射文件
2.配置配置文件 , 连接数据库
3.在操作类中,获取Configuration类的实例对象
4.获取SessionFactory类的实例对象
5.获取Session类对象
6.获取Transaction类对象 ,打开事务
6.通过Session类对象,以面向对象的方式操作数据库
7.提交事务,关闭Session.
可见,对于持久化对象的操作必须在Session类的实例对象调用相应方法才能同步到数据库。Session类的实例对象,由SessionFactory工厂产生。SessionFactory是
数据库编译后的内存镜像,通常一个应用对应一个SessionFactory类实例对象。SessionFactory类实例对象,由Configuration类实例对象产生,而Configuration类实例对象通过configure()方法加载默认的配置文件hibernate.cfg.xml。
上面就是通过Hibernate进行了一次持久化操作,对比Hibernate和JDBC两种操作数据库的方式,可以发现Hibernate有两大优点:
1.不需要手写SQL语句,以面向对象的方式操作数据库
2.Hibernate把使用JDBC访问数据库过程中产生的大量checked异常包装成了runtime异常,从而不必显示捕捉或者抛出,保证了代码的简洁性。