Hibernate

本文对比了JDBC和Hibernate的特点,介绍了Hibernate配置及基本CRUD操作。指出JDBC编程繁琐且缺乏缓存支持,而Hibernate提供面向对象编程、强大的缓存机制及更好的跨平台性。

一、基础部分

jdbc缺点

1、编程的时候很繁琐,用的trycatch比较多

 2jdbc没有做数据的缓存

 3、没有做到面向对象编程

  4sql语句的跨平台性很差

jdbc的优点

     效率比较高

hibernate的优点

1、完全的面向对象编程

2hibernate的缓存很牛的,一级缓存,二级缓存,查询缓存   重点

 3、编程的时候就比较简单了

4、跨平台性很强

 5、使用场合就是企业内部的系统

hibernate的缺点

    1、效率比较低

    2、表中的数据如果在千万级别,则hibernate不适合

    3、如果表与表之间的关系特别复杂,则hibernate也不适合


二、利用hibernate实现crud的操作

步骤

1、创建一个工程

2、导入jar



 说明:

            javassist包是用来创建代理对象的

              代理对象的三种创建方式:

                    1、jdkproxy

                    2、cglib

                    3、javassist

           jta: Java Transaction API,是sun公司给分布式事务处理出来的规范

3hibernate.cfg.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 name="foo">
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">332117</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
		     
		<!-- 显示hibernate给自动生成的sql语句 -->
		<property name="show_sql">true</property>
		<!-- 格式化显示hibernate给自动生成的sql语句  -->
		<property name="format_sql">true</property>
		<!-- 会自动创建数据库表 根据持续化类生成表的策略
			validate 	通过映射文件检查持久化类与表的匹配
			update		每次hibernate启动的时候,检查表是否存在,如果不存在则创建,如果存在则什么都不做
			create		每一次hibernate启动的时候,根据持久化类和映射文件生成表
			create-drop
		-->
		<!-- 方言:告诉hibernate使用什么样的数据库,hibernate就会在底层拼接什么样的sql语句 -->
		<property name="dialect">
			org.hibernate.dialect.MYSQLDialect
		</property>
		<property name="hbm2ddl.auto">update</property>
		<!-- 自动提交事务 -->
		<property name="hibernate.connection.autocommit">true</property>
		
		<property name="hibernate.current_session_context_class">thread</property>
		
		
		<!-- 对象和数据库中表的映射 
			建立从表到类的映射
			建立从表的字段的名称到类的属性的名称的映射
			建立从表的字段的类型到类的属性的类型的映射
		-->
		<mapping resource="com/lzh/domain/User.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>

主要的用途:

          告诉hibernate连接数据库的信息,用的什么样的数据库(方言)

          根据持久化类和映射文件生成表的策略

4、持久化类和映射文件


5、生成表

6、客户端

说明

hibernate.cfg.xml文件的加载

可以指定配置文件的路径,配置文件可以随意放

sessionFactory

1、hibernate中的配置文件、映射文件、持久化类的信息都在sessionFactory中

2、sessionFactory中存放的信息都是共享的信息

3、sessionFactory本身就是线程安全的

4、一个hibernate框架sessionFactory只有一个

5、sessionFactory是一个重量级别的类

session

1、得到了一个session,相当于打开了一次数据库的连接

2、在hibernate中,对数据的crud操作都是由session来完成的

transaction

  hibernate中的事务默认不是自动提交的

   

       设置了connection的setAutoCommit为false

      只有产生了连接,才能进行事务的操作。所以只有有了session以后,才能有transaction





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值