Hibernate

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础部分

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值