浅析Hibernate

    SSH网上商城虽然只有四天的视频,day01-04,不过边做项目边学习,还真是不容易,到现在为止已经进行了半个月了,才完成了两天的内容。其中光一个环境配置就花了十天左右的时间,包括配置文件添加、Jar包的添加等等。敲代码时再加上对开发环境的陌生,着实费了不少劲,调试也花费了好长时间,不过还好,现在已经熟悉一点了,做起来也顺手一些了,下面就简单汇总一下这里面用到的技术。

 

    SSH是集成框架,它是从三层的基础上发展而来的。三层中包括页面显示层、业务逻辑层、数据库操作层,SSH中同样也是,只不过每个层使用了不同的技术来实现。在SSH中,Hibernate负责数据持久化,也就是和数据库的交互;Spring负责业务逻辑,利用Spring注解来实现;页面显示则由Struts2来实现,负责Web层,利用的MVC架构将页面和逻辑分类。

 

    本篇博客就简单介绍一下Hibernate。

 

Hibernate是什么

    

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程的思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

 

    在做了网上商城之后,定义里有几个点就比较容易理解了。比如:

    1、Hibernate可以应用在任何使用JDBC的场合,也就是说,Hibernate和数据库有关系,是对数据库的操作。

 

    2、Hibernate属于ORM框架,就像ITOO中使用的EF,它们都属于对象关系映射框架,也就是说,Hibernate进行数据库操作就像EF一样,直接映射数据库。

 

    3、完成数据持久化的重任其实也是强调Hibernate用来做数据库交互。

 

Hibernate有什么

 

    Hibernate的核心类和接口有6个, Session、SessionFactory、Transaction、Query、Criteria和Configuration。Hibernate正是通过这些接口,实现持久化对象的存取,和对事务的控制。

 

1、Session

    Session接口负责执行被持久化对象的CRUD操作,CRUD是和数据库交互,其中包含了很多常见的SQL语句。

 

2、SessionFactory

    SessionFactory接口负责初始化Hibernate,充当数据存储源的代理,并负责创建Session对象。SessionFactory用到的是工厂模式,对一个数据库通常指定一个SessionFactory,对多个数据库操作指定多个SessionFactory。SessionFactory配置在applicationContext.xml中,是Dao和数据库交互的路径。

 

3、Transaction

    Transaction接口是一个可选的,是对实际事务实现的一个抽象,这些实现包括各种事务,这样就使得自己的项目可以在不停的环境和容器之间移植。

 

4、Query

    Query接口是对数据库以及持久化对象进行查询,它可以有两种表达方式:一是HQL语言,另一个是本地数据库的SQL语句。

 

5、Criteria

    Criteria接口与Query接口类似,允许创建并执行面向对象的标准化查询。

6、Configuration

 

    Configuration类的作用是对Hibernate进行配置,并对它进行启动。在Hibernate启动过程中,Configuration类的实例首先定位配置文件,读取配置文件的内容,然后创建一个SessionFactory对象。

 

如何使用Hibernate

 

1、引用Jar包

    Hibernate的使用需要引用相应的Jar包,这些Jar包在网上都可以下载到:

    Hibernate本身的Jar包:hibernate-distribution-3.6.10.Final\hibernate3.jar、hibernate-distribution-3.6.10.Final\lib\required\*.jar、hibernate-distribution-3.6.10.Final\lib\jpa\*.jar

 

    slf4j和log4j的整合Jar包:slf4j-1.7.2.jar、log4j.jar

 

    数据库驱动的Jar包:mysql-connector-java-5.0.4-bin.jar,在这里数据库是MySQL,所以下载的MySQL的驱动Jar包

 

    连接池相关Jar包:c3p0-0.9.1.jar

 

2、在配置文件中配置

    配置文件中需要配置三部分的内容:分别是C3P0连接池、Hibernate相关信息、事务管理相关配置。

 

C3P0:

 

<!-- 引入外部属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置C3P0连接池: -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<span style="white-space:pre">	</span><property name="driverClass" value="${jdbc.driver}"/>
	<property name="jdbcUrl" value="${jdbc.url}"/>
	<property name="user" value="${jdbc.user}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>

 

 

Hibernate相关信息:

 

	<!-- Hibernate的相关信息 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 注入连接池 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置Hibernate的其他的属性 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.connection.autocommit">false</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		<!-- 配置Hibernate的映射文件 也就是Dao层的映射文件-->
		<property name="mappingResources">
			<list>
				<value>cn/itcast/shop/user/vo/User.hbm.xml</value>
				<value>cn/itcast/shop/category/vo/Category.hbm.xml</value>
				<value>cn/itcast/shop/product/vo/Product.hbm.xml</value>
				<value>cn/itcast/shop/categorysecond/vo/CategorySecond.hbm.xml</value>
			</list>
		</property>
	</bean>

 

 

事务管理相关配置:

 

	<!-- 事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<!-- 开启注解事务 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>

 

 

总结

 

    Hibernate刚刚接触,还不是很熟悉,配置过之后也是只有简单的理解。在Hibernate中,用到了另外一种查询语句,也就是HQL,HQL是Hibernate Query Language,和SQL语句的查询语法很接近,提供更加丰富灵活、更为强大的查询能力。网上商城中直接传递的查询语句,是用HQL写的,有了SQL的基础,学习HQL应该不会很难。

评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值