Hibernate介绍:
持久化java对象
封装了JDBC,实现了or-mapping一个开源的持久层框架
orm:(ObjectRelationMapping)
Jdbc特点:
*操作代码复杂
*JDBC的应用与数据库耦合度强
*JDBC的应用很难做到轻松的数据库移植
*不能实现对数据的缓存
*对象与关系之间的转换,需要用户实现
*性能高(数据量非常庞大的情况)
Hibernate特点:
*封装了JDBC底层的操作
*Hibernate的应用与数据库耦合度低
*不再需要使用sql语句,直接操作对象
*orm的实现,抵抗不匹配
User{uid,username....}
save(user);
映射(xml)
t_user(uid,username)
*做不到sql优化
*缓存的实现
*不适合对数据量非常庞大的系统
Hibernate的使用:
*搭建环境:
hibernate3.5
hibernate3.5\lib\require\*.jar
1.antlr-2.7.6.jar-------------------语言转换工具(hql语句)
2.commons-collections-3.1.jar-------增强java处理集合的能力
3.dom4j-1.6.1.jar-------------------解析XML
4.jta-1.1.jar-----------------------提供标准Java事务处理接口
//3.5源代码中没有如下两个jar(log4j.jar, slf4j-log4j12.jar),在hibernate3.4\lib\test\下找
下面四个jar包都与日志系统有关
5.log4j.jar-------------------------处理日志
6.slf4j-log4j12.jar-----------------日志系统
7.slf4j-api-1.5.8.jar---------------日志系统
8.commons-logging-1.1.jar
hibernate3.5\
9.hibernate3.jar--------------------核心Jar
以下四个jar包都与hibernate的懒惰式加载有关
10.asm.jar
11.backport-util-concurrent-2.1.jar
12. cglib-2.1.3.jar
13.Javassist-3.9.0.GA.jar------------Java类提供扩展功能
数据库驱动
14.mysqldriver.jar-------------------数据库驱动
*配置文件
*映射文件(实现映射)User.hbm.xml
*配置文件(底层数据库连接信息,hibernate\project\etc\hibernate.cfg.xml)
具体步骤
1.配置数据库的连接信息,需要查找两个文件,都在hibernate3.5.6/project/etc下,hibernate.cfg.xml,hibernate.properties
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 必须配置的属性 -->
<!-- 底层数据库连接的基本信息 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hdemo01</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">865631572</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--**配置所使用的数据库方言**-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 可选配置 -->
<!-- 显示SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化显示SQL语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 表示由hibernate自动生成表结构 -->
<property name="hibernate.hbm2ddl.auto">create</property>
<!-- 必须配置加载的映射文件 -->
<mapping resource="com/tarena/demo/po/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
2.实体类(领域模型,popersistenceobject,pojo)
User
uid
username
password
3.实现对象与关系的映射,新建User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.tarena.demo.po.User" table="t_user">
<id name="uid" column="uid">
<generator class="identity"></generator>
</id>
<property name="userName"></property>
<property name="userPassword"></property>
</class>
</hibernate-mapping>
4.使用hibernateapi实现数据CRUD的操作
添加User
package com.tarena.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.tarena.demo.po.User;
public class TestApp {
public static void main(String[] args) {
User user = new User();
user.setUserName("李瑞");
user.setUserPassword("865631572");
//保存底层连接信息
Configuration cfg = new Configuration();
//解析Hibernate配置文件
cfg.configure();
//创建session工厂
SessionFactory factory= cfg.buildSessionFactory();
//创建session(和hibernate之间的会话)
Session session = factory.openSession();
//开启事务(查询的时候不需要开启事务)
Transaction tr = session.beginTransaction();
//保存对象
session.save(user);
//提交事务
tr.commit();
}
}