Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
hibernate底层依然是jdbc实现的, Hibernate是一个对象关系映射模型。
hibernate应用程序的大体流程:
创建Hibernate的配置文件
•创建持久化类:javabean
•创建对象-关系映射文件
•通过Hibernate API编写访问数据库的代码
使用Hibernate操作数据库需要七个步骤
(1)读取并解析配置文件
Configuration conf = new Configuration().configure();
(2)读取并解析映射信息,创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
(3)打开Session
Session session = sf.openSession();
(4)开始一个事务(增删改操作必须,查询操作可选)
Transaction tx = session.beginTransaction();
(5)数据库操作
session.save(user);//或其它操作
(6)提交事务(回滚事务)
tx.commit();(tx.rollback();)
(7)关闭session
session.close();
hibernatede的API
Configuration:负责管理Hibernate的配置信息
SessionFactiory:Hibernate配置文件分为两种格式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件
Hibernate的JDBCTransaction根本就是conn.commit
Session:般的持久化方法(CRUD)都是通过Session来调用的,Session是非线程安全的
transaction:Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transaction的封装。
hibernate配置
第一种是使用hibernate.properties文件作为配置文件。
第二种是使用hibernate.cfg.xml文件作为配置文件。
hibernate映射
本质:将关联关系映射到数据库,所谓的关联关系是对象模型在内存中的一个或多个引用
单向关联:假设存在两张表person表和address表,如果在应用的业务逻辑中,仅需要每个person实例能够查询得到其对应的Address实例,而Address实例并不需要查询得到其对应的person实例;或者反之。
双向关联:既需要每个person实例能够查询得到其对应的Address实例,Address实例也需要查询得到其对应的person实例。
多对一(many to one):如用户和组 学生和班级
一对多(one to many):如用户和电子邮件
多对多(many to many):如学生选课
一对一(one to one):如用户和身份证
二.单向多对一
多个用户属于同一个组,多个学生处于同一个班级
Group:一的一方,不需要维护关系,所以和普通配置一样
User:多的一方,需要维护双方关系,内有一的一方引用:
cascade(级联)all、none、save-update、delete
三.单向一对多
Class(班级)和Student(学生)之间是一对多的关系
四:双向一对多关联
所谓双向一对多关联,同时配置单向一对多和单向多对一就成了双向一对多关联,上面两种都是单向的,但是在实际开发过程中,很多时候都是需要双向关联的,它在解决单向一对多维护关系的过程中存在的缺陷起了一定的修补作用。
Hibernate继承关系映射