Hibernate 笔记(1) -导入hibernate、hibernate基础

Hibernate是对于JDBC操作的封装框架,使用Hibernate前要将相关jar和配置文件放到工程中。

1,jar包导入:

如图所示需要导入Hibernate有关的8个基本jar,另加一个数据库驱动包(以MySQL为例)。

这里写图片描述

这些包分别在下载的hibernate-distribute文件夹下和下图的两个文件夹内。

这里写图片描述

2 导入配置文件

在hibernate3压缩包内找到两个配置文件:

这里写图片描述

复制到工程中,其中配置文件和映射文件分别改成:

这里写图片描述

这里写图片描述

这种样式的,先修改config.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接设置 -->

        <!-- 格式化打印的sql语句 ,方便查看-->
        <property name="format_sql">true</property>
        <!-- 数据库驱动 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 数据库url -->
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/estore</property>
        <!-- 连接数据库用户名,密码 -->
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
        <!-- SQL dialect 数据库连接的'方言' -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <!-- Drop and re-create the database schema on startup 将映射文件转化成数据库定义语言 -->
        <property name="hbm2ddl.auto">update</property>

        <mapping resource="com/estore/pojo/customer.hbm.xml" />
        <mapping resource="com/estore/pojo/orderform.hbm.xml" />
        <mapping resource="com/estore/pojo/orderline.hbm.xml" />
        <mapping resource="com/estore/pojo/book.hbm.xml" />
    </session-factory>
</hibernate-configuration>

其中mapping标签就代表了每一个配置文件的路径。

3完整笔记

JDBC与Hibernate比较
1,JDBC: java中嵌入SQL,不便于维护
Hibernate: 无须编写SQL语句;由Hibernate通过读取映射文件在运行时自动生成SQL
save(student)-> insert into customer values(?,?,?);
2,JDBC:查询数据,需要手动封装成对象;保存对象,需要手动插入值
Hibernate: 可自动实现对象和表中记录的转换
3,JDBC:查询内存中已存在的对象,修改属性值,均需要和数据库进行交互
Hibernate:通过Dirty checking(脏检查)避免交互;
Hibernate的工作原理
1,Hibernate框架根据hibernate.cfg.xml的配置的信息来和数据库进行通信
2,Hibernate框架根据具体的映射文件**.hbm.xml 来保存,更新,删除,查询对象。
Hibernate API
Configuration接口:
Configuration对象用于配置并且根启动Hibernate,Hibernate应用通过Configuration实例实例还指定对象-关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory
Configuration config = new Configuration();
Config.configure();
SessionFactory factory = config.buildSessionFactory();
SessionFactory
用来构造Session的实例对象,它的特点:
1)线程安全: 该实例对象何以被多个线程共享
2)重量级:该实例对象的构造和销毁消耗系统资源,所以一般在应用程序启动的时候就构造实例对象,一般一个数据库对应一个SessionFactory的实例对象,如果要访问多个数据库,就需要创建多个该实例对象。
3)SessionFactory实例对象中维护了一个很大的缓存,存放了一些预定义的SQL语句和XML配置文件的信息,另外还维持了一个Hibernate的第二级缓存(缓存了所有Session对象所加载的POJO对象),用来保存在该生命周期中的一些业务对象,但是这个第二级缓存默认是关闭的,必须在xml中配置才可以开放
Session session = factory.openSession();
Session(别名:持久化管理器)
用来对对象的保存,更新,删除和查询
特点:
1)线程不安全,要避免同一个Session对象被多个线程共享,一般一个线程对应一个Session
2)轻量级:可以随意的构造和销毁该实例对象。
3)Session对象中维护了一个缓存,称为Hibernate的第一级缓存(缓存了当前Session对象所加载的POJO对象)每个Session对象都有自己的缓存。
Query
用来查询单个或者多个对象,利用HQL语句(Hibernate Query Language)面向对象的
Query query = session.createQuery(“from Student where studentId=1”);
Student s = (Student)query.uniqueResult();
Criteria
功能同上,以面向对象的形式和数据库进行复杂的CRUD操作,还适用于动态查询。
Transaction
用来处理事务的,事务的启动,提交,回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值