Spring + Hibernate 使用注解方式和配置文件方式映射实体类时spring_hibernate.xml 配置

本文详细介绍了在Spring框架下,使用Hibernate进行数据库操作的三种配置方法:注解方式、配置文件方式及混合使用方式。深入探讨了如何指定实体类、设置数据库方言、调整性能参数等关键配置。

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

1. 注解方式

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <!--指明使用注解的实体类-->
  <property name="annotatedClasses">
    <list>
      <value>workbench.entities.generated.LogonHis</value>
    </list>
  </property>
  <!--使用注解的实体类包 推荐使用改写法来替换上面写法-->
  <!--
  <property name="packagesToScan">
    <list>
      <value>workbench.entities.generated.*</value>
    </list>
  </property>
  -->
  <property name="hibernateProperties">
    <props>
      <!-- hibernate数据库方言配置(即连接哪种数据库) -->
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
      <prop key="hibernate.format_sql">true</prop>
      <!-- 启用查询缓存,程序中须手动操作 -->
      <prop key="hibernate.jdbc.fetch_size">50</prop>
      <!-- hibernate批量插入,删除和更新时每次操作的记录数 -->
      <prop key="hibernate.jdbc.batch_size">50</prop>
      <prop key="hibernate.show_sql">true</prop>
      <prop key="hibernate.connection.release_mode">after_transaction</prop>
      <prop key="hibernate.connection.isolation">1</prop>
      <!-- 启用查询缓存,程序中须手动操作 -->
      <prop key="hibernate.cache.use_second_level_cache">false</prop>
    </props>
  </property>
</bean>

2.配置文件方式

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <!--指明使用配置文件的实体类-->
  <property name="mappingDirectoryLocations">
    <list>
      <!-- spring容器会去该包及子包下搜索所有的映射文件 -->
      <value>classpath:workbench/entities/generated/</value>
      <value>classpath:workbench/apps/css/entities/generated/</value>
      <value>classpath:workbench/app/cc/entities/generated/</value>
      <value>classpath:workbench/app/cc/entities/hs/</value>
      <value>classpath:workbench/app/cc/entities/hx/</value>
      <value>classpath:com/worldline/wcs/entity/</value>
      <value>classpath:com/worldline/wcs/dataload/entity/</value>
    </list>
  </property>
  <property name="hibernateProperties">
    <props>
      <!-- hibernate数据库方言配置(即连接哪种数据库) -->
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
      <prop key="hibernate.format_sql">true</prop>
      <!-- 启用查询缓存,程序中须手动操作 -->
      <prop key="hibernate.jdbc.fetch_size">50</prop>
      <!-- hibernate批量插入,删除和更新时每次操作的记录数 -->
      <prop key="hibernate.jdbc.batch_size">50</prop>
      <prop key="hibernate.show_sql">true</prop>
      <prop key="hibernate.connection.release_mode">after_transaction</prop>
      <prop key="hibernate.connection.isolation">1</prop>
      <!-- 启用查询缓存,程序中须手动操作 -->
      <prop key="hibernate.cache.use_second_level_cache">false</prop>
    </props>
  </property>
</bean>

3.混合使用 

    由于配置文件太多,修改起来麻烦,所以同时使用两种配置方式。先删除原有的配置文件,使用注解方式映射,新建的实体类可以直接使用注解方式映射。这样既不影响旧代码的功能,也能扩展新代码的功能。不过这不是长久之计,推荐全部使用注解,这样更灵活,即使切换成MyBatis也可以正常使用。

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <!--指明使用注解的实体类-->
  <property name="annotatedClasses">
    <list>
      <value>workbench.entities.generated.LogonHis</value>
    </list>
  </property>
  <!--指明使用配置文件的实体类-->
  <property name="mappingDirectoryLocations">
    <list>
      <!-- spring容器会去该包及子包下搜索所有的映射文件 -->
      <value>classpath:workbench/entities/generated/</value>
      <value>classpath:workbench/app/cc/entities/generated/</value>
      <value>classpath:workbench/app/cc/entities/hs/</value>
      <value>classpath:workbench/app/cc/entities/hx/</value>
      <value>classpath:com/worldline/wcs/entity/</value>
      <value>classpath:com/worldline/wcs/dataload/entity/</value>
    </list>
  </property>
  <property name="hibernateProperties">
    <props>
      <!-- hibernate数据库方言配置(即连接哪种数据库) -->
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
      <prop key="hibernate.format_sql">true</prop>
      <!-- 启用查询缓存,程序中须手动操作 -->
      <prop key="hibernate.jdbc.fetch_size">50</prop>
      <!-- hibernate批量插入,删除和更新时每次操作的记录数 -->
      <prop key="hibernate.jdbc.batch_size">50</prop>
      <prop key="hibernate.show_sql">true</prop>
      <prop key="hibernate.connection.release_mode">after_transaction</prop>
      <prop key="hibernate.connection.isolation">1</prop>
      <!-- 启用查询缓存,程序中须手动操作 -->
      <prop key="hibernate.cache.use_second_level_cache">false</prop>
    </props>
  </property>
</bean>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再见阿飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值