Spring ORM應用詳解

一、Spring ORM簡介

Spring ORM是Spring框架在數據訪問層的一個重要模塊,主要是為了在Spring應用中整合多種ORM框架,比如Hibernate、Mybatis等,方便在Spring項目中進行數據持久化操作。

使用Spring ORM,可以通過註解或者xml配置的方式,快速的將ORM框架整合到應用中,避免了大量的樣板代碼,同時也簡化了數據訪問層的代碼。

二、Spring ORM集成Hibernate

將Hibernate整合到Spring ORM中的步驟:

1. 引入相關的依賴包:

<!--Hibernate-->
  <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-core</artifactId>
       <version>5.4.20.Final</version>
  </dependency>
  <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-entitymanager</artifactId>
       <version>5.4.20.Final</version>
  </dependency>
  
<!-- Spring ORM-->
  <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-orm</artifactId>
       <version>5.2.9.RELEASE</version>
  </dependency>

2. 配置Hibernate相關的屬性,如資料庫連接信息、mapping文件等。

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingResources"><list>
        <value>com/dxy/pojo/Student.hbm.xml</value>
    </list></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</prop>
        </props>
    </property>
</bean>

3. 使用HibernateTemplate或者註解方式進行數據訪問操作。

使用HibernateTemplate的方式:

@Component
public class StudentDaoImpl extends HibernateDaoSupport implements StudentDao{

    @Override
    public void save(Student student) {
        getHibernateTemplate().save(student);
    }
}

使用註解方式進行數據訪問操作:

@Repository
public class StudentDaoImpl implements StudentDao{

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void save(Student student) {
        sessionFactory.getCurrentSession().save(student);
    }
}

三、Spring ORM集成Mybatis

將Mybatis整合到Spring ORM中的步驟:

1. 引入相關的依賴包:

<!--Mybatis-->
  <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.5.6</version>
  </dependency>
  <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis-spring</artifactId>
       <version>2.0.6</version>
  </dependency>

<!-- Spring ORM-->
  <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-orm</artifactId>
       <version>5.2.9.RELEASE</version>
  </dependency>

2. MySqlSessionFacotryBean是Mybatis整合Spring的關鍵,可以直接使用其中的SqlSessionFactoryBean對Mybatis進行配置。

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath:com.dxy.mapper/*.xml"/>
</bean>

3. 開發Mapper映射文件和Mapper介面,同時使用註解進行數據操作:

@Repository
public interface StudentMapper {
    @Insert("insert into tb_student(name, age, gender) values(#{name}, #{age}, #{gender})")
    public void save(Student student);
}

4. 配置MapperScannerConfigurer自動掃描Mapper介面,並將介面注入到Spring容器中。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.dxy.mapper"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

四、Spring ORM事務管理

Spring ORM為我們提供了很好的事務管理機制,可以輕鬆的集成系統和自定義的事務管理器。

在Spring中,使用@Transactional註解即可對方法進行事務管理,其中參數可以指定事務管理器bean的名稱,也可以使用默認的事務管理器。

@Service
public class StudentServiceImpl implements StudentService{
    @Autowired
    private StudentDao studentDao;

    @Transactional
    @Override
    public void save(Student student) {
        studentDao.save(student);
    }
}

也可以使用配置文件的方式進行事務管理器的配置,如下:

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

五、Spring ORM使用建議

1. 在項目開發步驟中,建議先為Hibernate或Mybatis進行獨立的配置和單元測試,確保ORM框架本身的正確性和性能優化。

2. 在整合Spring ORM框架時,建議對集成的ORM框架進行了解,如Hibernate的二級緩存、慢查詢優化等特性,以便更加合理的使用。

3. 需要注意的是,在事務控制上,Spring ORM與Hibernate或Mybatis都提供了自己的事務管理機制,需要避免事務管理的重複。

六、總結

Spring ORM極大的簡化了數據訪問層中的代碼,同時也提供了豐富的ORM框架的整合和事務管理機制。在實際項目開發中,可以靈活選擇使用Hibernate、Mybatis等ORM框架,並根據實際情況進行性能調優。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197238.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 13:28
下一篇 2024-12-03 13:28

相關推薦

發表回復

登錄後才能評論