`
wutheringsea
  • 浏览: 262578 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring笔记8---hibernate集成

阅读更多

1.HibernateTemplate模板类

*装载单个实体的方法,在Spring内部,这些方法都会将具体操作委派给HibernateCallback接口的doInHibernate()回调反复,进而让Session与数据库进行交互。

 

Object get(...) throws DataAccessException;

Object load(....) throws DataAccessException;

Object loadAll(....) throws DataAccessException;

Object refresh(....) throws DataAccessException;

Object contains(....) throws DataAccessException;

....
 

*存储单个实体的辅助方法

 

void lock(....) throws DataAccessException;

Serializable save(....) throws DataAccessException;

void update(....) throws DataAccessException;

void saveOrUpdate(....) throws DataAccessException;

void persist(....) throws DataAccessException;

Object merge(....) throws DataAccessException;

void delete(....) throws DataAccessException;

void deleteAll(....) throws DataAccessException;

void flush(....) throws DataAccessException;

void clear(....) throws DataAccessException;
 

*此外还有基于HQL的查找方法和基于命名查询的查找方法

 

命名查询方法查找示例如下:

 

现在test/Query.hbm.xml定义了如下2个命名查询,其中一个还启用了命名参数

 

<query name="namedVisits">
<![CDATA[
   from Visits as vi where vi.id=?
]]>
</query>

<query name="namedAndParamedVisits">
<![CDATA[
   from Visits as vi where vi.id=:id
]]>
</query>
 

接下来再编码中引用

 

List list1 = this.getHibernateTemplate().findByNamedQuery("namedVisits",2);

List list2 = this.getHibernateTemplate().findByNamedQueryAndNamedParam("namedAndParamedVisits",new Stringp[]{"id"},new Object[]{2});
 

2.关于SessionFactory.getCurrentSession()方法的使用

 

注意几个细节:

 

* Session对象是当前活动事务所征集的Session

 

*DataAccessException异常体系适合于Spring提供的各种DAO层集成技术,比如JDBC,Hibernate,JPA等

@Repository是应用类的注解,其直接应用到DAO对象本身,比如HibernateClinic。

 

3. LocalSessionFactoryBean

 

LocalSessionFactoryBean集结了Hibernate SessionFactory相关的所有元数据信息。

如下配置:

 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>...../xxx.hbm.xml</value>
<value>...../xxx.hbm.xml</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
 

4. 事务管理的支持

 

需在Spring配置文件中做如下配置

 

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory"/>
 

5. 基于hibernate的Lob处理

 

*对Blob字段的操作可详见Spring的imagedb范例。

 

*Oracle数据库中,较大内容varchar2(4000)往往也很无奈。对此,我们往往采用大对象进行存储(clob),但是由于jdbc驱动对CLOB支持不好,因此使用hibernate进行操作时,往往非常麻烦。但是使用最新的oracle驱动,ojdbc14.jar

然后稍微更改Spring中,SessionFactory的属性参数:

<bean id="sessionFactory"

 

                   class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

                   <property name="dataSource">

                            <ref bean="dataSource" />

                   </property>

                   <property name="hibernateProperties">

                            <props>

                                     <prop key="hibernate.dialect">

                                               org.hibernate.dialect.Oracle9Dialect

                                     </prop>

                                     <prop key="hibernate.connection.SetBigStringTryClob">true</prop>

                            </props>

                   </property>

                   <property name="mappingResources">

</property>

</bean>

然后将映射文件中更改成:

   <property name="newsContent" type="text">

            <column name="NEWS_CONTENT" />

        </property>

在POJO类中,直接使用String类型,就可以自由访问了!

 

分享到:
评论

相关推荐

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2docs

    此外,对JDBC、Hibernate、JPA等多种持久层技术的集成,使Spring成为了数据库操作的强大后盾。 除此之外,Spring 2.5还强化了测试支持,包括模拟对象(Mock Objects)和单元测试框架的集成,使得测试过程更加便捷。...

    MLDN_J2EE框架_笔记--精华---(包括jsp struts hibernate spring).rar

    《MLDN_J2EE框架_笔记--精华---(包括jsp struts hibernate spring)》这份压缩包文件聚焦于Java企业级开发中的核心技术,涵盖了JSP、Struts、Hibernate和Spring四大框架,它们是构建现代J2EE应用的基础。以下是这些...

    记录-笔记-用ANT构建-struts-spring-hibernate

    标题 "记录-笔记-用ANT构建-struts-spring-hibernate" 暗示了这篇笔记主要涉及使用Apache Ant工具来构建一个整合了Struts、Spring和Hibernate的Java Web项目。Struts是MVC(模型-视图-控制器)框架,Spring是全面的...

    spring-data-jpa hibernate

    - **Integration with Spring**:与Spring的其他模块如Spring MVC无缝集成,提供事务管理等服务。 2. **Hibernate**:Hibernate是JPA的一个实现,它是一个对象关系映射(ORM)框架。Hibernate允许开发者用面向对象...

    spring-framework-5.2.3.RELEASE.rar

    Spring 5.2.3.RELEASE是该框架的一个稳定版本,包含了对Java 8及更高版本的支持,并且优化了性能和易用性。 在"spring-framework-5.2.3.RELEASE.rar"压缩包中,你将找到以下几个关键部分: 1. **核心容器**:这是...

    Spring学习笔记-cqupt

    - **框架集成**:Spring 可以与众多其他框架无缝集成,如 MyBatis、Hibernate 等。 3. **Spring 的组成** Spring 框架由多个模块组成,包括核心容器(Core Container)、数据访问/集成(Data Access/Integration...

    Struts+spring+hibernate学习笔记! - Struts原理与实践 - JavaEye知识库.files

    此外,Spring 还集成了 Hibernate,使得数据库操作更加便捷。 Hibernate 是一个 ORM 解决方案,它允许开发者使用 Java 对象来操作数据库,而无需编写大量的 SQL 语句。Hibernate 通过实体类(Entity)、持久化属性...

    Spring 和hibernate集成自学笔记

    ### Spring与Hibernate集成知识点详解 #### 一、Spring与Hibernate集成概述 在现代软件开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力成为Java领域最受欢迎的企业级应用开发框架之一。而...

    spring-analysis-master.zip

    2. ORM集成:Spring支持多种ORM框架,如Hibernate、MyBatis等,提供了统一的数据访问抽象层,使得更换持久化策略变得简单。 四、Spring事务管理 1. 编程式事务管理:通过PlatformTransactionManager接口进行事务...

    spring hibernate 事务管理学习笔记(二)

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    flex3读书笔记----flex整合hibernate

    6. **MyEclipse**: MyEclipse 是一个基于Eclipse的集成开发环境,专门用于Java和Web开发,包括对J2EE、Spring、Struts和Hibernate等框架的支持。在搭建环境中,MyEclipse 6.5.0 用于创建Web项目和管理服务器。 7. *...

    官方原版spring-framework-5.0.9.RELEASE.zip

    在这个版本中,Spring 提供了对最新Java特性的支持,以及对其他流行技术的集成,如Spring Boot、Hibernate、JPA等。 首先,Spring Framework 的核心特性包括依赖注入(Dependency Injection,DI),这是其最著名的...

    Spring-data-jpa 学习笔记.docx

    ### Spring-data-jpa 学习笔记 #### 一、spring-data-jpa的简单介绍 Spring Data JPA 是 Spring Data 的一部分,它简化了基于 Java Persistence API (JPA) 的数据访问层开发工作。Spring Data 旨在减少数据访问层...

    Spring笔记.doc

    1. 轻量级:Spring 的核心容器非常小巧,不依赖于特定的服务器或者库,这使得它易于集成到现有的系统中。 2. 无植入:Spring 不强制使用特定的编程模型,可以自由地选择编程方式,比如基于接口或基于注解。 3. 框架...

    Struts2笔记+Hibernate3.6笔记+Spring3笔记

    SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够构建高效、灵活的企业级Web应用程序。现在,让我们深入探讨这些框架的知识点。 **Struts2笔记** Struts2是MVC...

    Spring学习笔记+学习源码.zip

    8. **Spring Security**:这是一个强大的安全框架,提供了认证和授权功能,可以保护Web应用程序免受攻击。 9. **Spring Integration**:提供了异步处理、消息驱动和企业服务总线(ESB)等集成解决方案。 10. **...

    Struts2-Spring-Hibernate

    Spring的IoC和AOP配置,以及与Hibernate的集成;Hibernate的实体类、映射文件和基本操作。此外,还会涉及如何设置项目结构、配置文件的编写,以及实际的CRUD操作示例。 在实际项目中,SSH组合提供了良好的分层架构...

    spring-note spring 读书笔记

    这份"spring-note spring 读书笔记"深入探讨了Spring的核心概念以及如何与其他流行技术如JDBC、Hibernate、Struts和事务管理进行集成。 1. **Spring依赖注入(IOC)**: Spring的IOC容器是其核心,负责创建对象并...

    Spring+Hibernate笔记

    【Spring+Hibernate笔记】这篇文档主要涵盖了在Web开发中使用Spring和Hibernate的基础知识。首先,我们从Spring的Hello World开始,了解如何配置JSP运行环境。 1.1. 配置JSP运行环境是开发Web应用的第一步。这包括...

    Spring Boot核心技术-笔记-pdf版.pdf

    **Spring Boot核心技术详解** Spring Boot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的...希望这份学习笔记能帮助你深入理解和掌握Spring Boot的精髓,祝你在Spring Boot的学习之路上一帆风顺!

Global site tag (gtag.js) - Google Analytics