SSH整合中 hibernate托管给Spring得到SessionFactory

需要完成整合的总体目的:

  • 将SSH框架中的Hibernate托管给Spring,获取SessionFactory对象并使用SessionFactory对象创建与数据库的会话。
  • 为了达到使用Hibernate的目的,还需要配置 数据源、事务管理器、持久化类映射等。

达到以上目的,步骤如下:

1. 引入依赖

在POM文件中添加 Hibernate、Spring、JDBC、数据源等依赖。可以参考如下代码示例:

<dependencies>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.32.Final</version>
    </dependency>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.3</version>
    </dependency>

    <!-- JDBC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.3</version>
    </dependency>

    <!-- 数据源 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.6</version>
    </dependency>

</dependencies>

2. 数据源配置

在Spring的配置文件(如 applicationContext.xml)中,配置数据源信息。可以参考如下代码示例:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/test" />
    <property name="username" value="root" />
    <property name="password" value="123456" />

    <!-- 配置连接池 -->
    <property name="initialSize" value="5"/>
    <property name="minIdle" value="1"/>
    <property name="maxActive" value="20"/>
    <property name="maxWait" value="60000"/>
    <property name="timeBetweenEvictionRunsMillis" value="60000"/>
    <property name="minEvictableIdleTimeMillis" value="300000"/>

    <property name="validationQuery" value="SELECT 1 FROM DUAL" />
    <property name="testWhileIdle" value="true" />
    <property name="testOnBorrow" value="false" />
    <property name="testOnReturn" value="false" />

    <property name="poolPreparedStatements" value="true" />
    <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>

    <property name="filters" value="stat" />
</bean>

3. 配置事务管理器和SessionFactory

在Spring的配置文件中,配置事务管理器和SessionFactory。可以参考如下代码示例:

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.example.entity" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

4. UserService类示例

编写 UserService 类,用于演示通过Spring获取SessionFactory对象,创建与数据库的会话,进行数据操作。可以参考如下代码示例:

@Service
@Transactional
public class UserService {

    @Autowired
    private SessionFactory sessionFactory;

    public void addUser(User user) {
        Session session = sessionFactory.getCurrentSession();
        session.save(user);
    }

    public User getUserById(int id) {
        Session session = sessionFactory.getCurrentSession();
        User user = session.get(User.class, id);
        return user;
    }

}

5. UserController类示例

编写 UserController 类,用于演示在Controller层使用UserService类完成数据操作。可以参考如下代码示例:

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/add")
    public String addUser(@RequestBody User user) {
        userService.addUser(user);
        return "添加成功!";
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable int id) {
        User user = userService.getUserById(id);
        return user;
    }

}

上述示例代码中:

  • UserService中的 sessionFactory 对象是使用 @Autowired 注解实现自动注入的。
  • Session session = sessionFactory.getCurrentSession(); 代码通过获取SessionFactory对象创建与数据库的会话。
  • UserService中的 addUser() 方法和 getUserById() 方法,都是通过获取与数据库的会话完成对数据库的操作。
  • UserController中可以直接使用 UserService 完成对数据库的操作。而UserService中的SessionFactory对象是通过Spring自动注入的,不需要手动创建和管理。

综上所述,通过以上步骤,就可以实现将SSH框架中的Hibernate托管给Spring,获取SessionFactory对象并使用SessionFactory对象创建与数据库的会话。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SSH整合中 hibernate托管给Spring得到SessionFactory - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 一篇文章带你了解MySQL数据库基础

    一篇文章带你了解MySQL数据库基础 概述 MySQL是一个非常流行的关系型数据库管理系统。它被广泛应用于Web应用程序的开发中,因为它能够处理大量的数据,而且速度快且稳定。 这篇文章会介绍MySQL数据库的基础知识,包括如何创建数据库和表格,如何插入和查询数据以及如何使用一些常见的命令和函数。 安装MySQL 在开始使用MySQL数据库之前,我们需要先安装…

    Java 2023年6月16日
    00
  • 使用maven的profile构建不同环境配置的方法

    使用maven的profile构建不同环境配置的方法,一般分以下几个步骤: 配置pom.xml文件 在pom.xml文件中添加不同环境的profile,例如: <profiles> <!– 开发环境 — > <profile> <id>dev</id> <properties> &l…

    Java 2023年5月19日
    00
  • mybatis快速入门学习教程新手注意问题小结

    下面是针对“mybatis快速入门学习教程新手注意问题小结”的完整攻略。 1. 简介 MyBatis是一个持久层框架,它可以简化Java对象(POJO)与数据库之间的交互工作。同时,MyBatis还支持调用存储过程和执行高级查询。 在使用MyBatis时,需要注意以下几点: 准确配置MyBatis配置文件 明确SQL语句,并将其写入Mapper 通过Mapp…

    Java 2023年6月1日
    00
  • jsp实现局部刷新页面、异步加载页面的方法

    让我来为您详细讲解一下“JSP实现局部刷新页面、异步加载页面的方法”的完整攻略。 前言 JSP(Java Server Pages)是一种基于Java技术的Web开发技术,它允许开发人员在HTML标签中包含Java代码,并通过编译器将其转换为Java Servlet。JSP通常与MVC(Model-View-Controller)设计模式一起使用,它允许开发…

    Java 2023年6月15日
    00
  • Java基础之JDBC的数据库连接与基本操作

    Java基础之JDBC的数据库连接与基本操作 Java数据库连接(JDBC)是Java语言中用于与关系型数据库进行交互的一种API(Application Programming Interface)。 本篇攻略主要讲解JDBC的数据库连接和基本操作,包括以下内容: 数据库连接步骤 JDBC基本操作(插入、更新、删除、查询) 操作示例 数据库连接步骤 使用J…

    Java 2023年6月1日
    00
  • SpringBoot使用JWT实现登录验证的方法示例

    以下是“SpringBoot使用JWT实现登录验证的方法示例”的完整攻略: 1. 什么是JWT? JWT(JSON Web Token)是由JSON生成的令牌,通常用于身份验证和授权。它是一个开放标准(RFC 7519),通过在不同方之间安全地传输声明来作为JSON Web签名(JWS)或JSON Web加密(JWE)的方式。在Spring Boot中使用J…

    Java 2023年5月20日
    00
  • SpringMVC RESTFul实战案例访问首页

    下面是关于“SpringMVC RESTFul实战案例访问首页”的完整攻略,包含两个示例说明。 SpringMVC RESTFul实战案例访问首页 SpringMVC是一个流行的Java Web框架,它可以帮助我们更加方便地构建Web应用程序。本文将介绍如何使用SpringMVC构建一个RESTFul风格的Web应用程序,并访问首页。 步骤一:创建Sprin…

    Java 2023年5月17日
    00
  • Spring Boot实现登录验证码功能的案例详解

    Spring Boot实现登录验证码功能的案例详解 简介 最近,我在开发一个基于Spring Boot的Web应用程序时,需要实现一个登录验证码功能,以确保用户输入有效并防止暴力破解。在研究后,我发现可以通过添加一些依赖项和编写一些代码来轻松地实现此功能。在本文中,我将与您分享实现登录验证码功能的详细步骤。 步骤 步骤1:添加依赖 为了实现登录验证码功能,我…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部