Hibernate是一种orm(对象关系映射),持久层框架,对jdbc的一种轻量级封装。
Hibernate让在编写关于数据库部分时,可以不用关心具体是哪种数据库,通用一种和数据库连接的方法。Hibernate可以用在j2ee和j2se中,struts只能用在j2ee(web)中。
数据持久层对jdbc进行了封装,为上一层的业务逻辑层提供了大量的API。
configuration sessionfactory session transaction
三个重点:
1.hibernate的api
2.Hibernate.cfg.xml核心配置文件,此核心文件还要管理对象关系映射文件
3.对象关系映射文件
三个开发方式:
1.从domain object->mapping->db
2.DB(数据库建表)开始,用工具生成domain object(对象模型)和mapping(映射)
3.从映射文件开始
Domain(javabean/pojo)对象名称是创建的数据库表名称的首字母大写。
Domain
1)有一个主键
2)有其他的实例域(private)和setget方法
3)一定有一个无参数的构造器(用于hibernate的框架反射机制)
4)实例域建议用包中类来定义(int为Integar)
关系映射文件
用于指定domain对象和表的映射关系,一般命名为:domain对象名.hbm.xml。一般放在和domain对象同一个文件夹下。
对象关系映射文件Domain.hbm.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-mapping package=”com.quinn.domain”>
<class name=”Employee” table=”employee”>
//id用来指定主键
<id name=”id” column=”id”>
//generator是用来指定主键的生成策略
<generator class=”sequence”>
<param name=”sequence”>emp</param>
</generator>
</id>
//配置其他的属性
<property name=”name”>
<column name=”name” not-null=”false” ...>
</property>
</class>
hibernate.cfg.xml文件用于配置连接的数据库类型和用户名、密码、URL…等等内容,该文件的名字一般不修改
Hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
//这是hibernate的核心文件,它的主要作用包括配置连接数据库的类型
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orclsp</property>
//配置使用中driver
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
<property name="connection.pool_size">2</property>
//方言dialect,用于明确的告诉hibernate现在连接的是哪一种数据库
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
//Enable Hibernate's current session context,
//使用这个可以使用getCurrentSession()函数
<property name="current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
//用于指定hibernate.cfg.xml文件所管理的对象映射文件
<mapping resource="com/quinn/domain/employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
数据持久层对jdbc进行了封装,为上一层的业务逻辑层提供了大量的API。
configuration sessionfactory session transaction
//Configuration创建Configuration对象,用对象读取配置文件hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
//Sessionfactory是一个接口,会话工程,单态
SessionFactory sessionFactory = configuration.bulidSessionFactory();
//Session创建session会话,和数据库的对话
Session session = sessionFactory.openSession();
//Transaction在hibernate中,在增加、删除、修改的时候要用事务提交
Transaction transaction = session.beginTransaction();
//添加一个雇员
Employee employee = new Employee();
Employee.SetName(“quinn”);
...
Session.save(employee);//相当于在mysql语句中的insert
Transaction.commit();//事务性提交
Session.close();
用构造函数和创建工具类的方法来快速方便的使用hibernate来对数据库进行操作。