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日

相关文章

  • java使用spring实现读写分离的示例代码

    Sure! 首先,我们来了解一下读写分离。 读写分离,顾名思义,就是将数据库中的读写操作分离开来。通俗点讲,就是在读多写少的场景下,通过将读操作分别发送到不同的数据库实例上,减轻数据库读请求的压力,提高系统处理能力。 接下来,我们一起来看看 Java 如何使用 Spring 实现读写分离。 前置条件 在开始编写示例之前,需要确保你已经搭建好了如下环境: Ja…

    Java 2023年5月19日
    00
  • Maven deploy配置方法详解

    Maven deploy配置方法详解 在Maven项目中,使用deploy命令可以将项目打包并发布到Maven仓库中。下面详细介绍Maven deploy的配置方法。 1. 配置POM文件 在Maven项目的pom.xml文件中,需要配置Maven的distributionManagement节点。该节点的repository子节点配置发布到的Maven仓库…

    Java 2023年5月19日
    00
  • java编写的文件管理器代码分享

    下面是“Java编写的文件管理器代码分享”的完整攻略: 一、介绍 Java是一门广泛使用的编程语言,其编写出的程序可运行在不同操作系统的计算机上,具有很强的跨平台性。在Java中,我们可以使用java.io包中的类来处理文件和文件夹,并实现一个简单的文件管理器。 二、文件管理器基本功能 一个基本的文件管理器应该具有以下功能: 列出文件夹中的所有文件和子文件夹…

    Java 2023年5月20日
    00
  • Java设计模式之java状态模式详解

    Java设计模式之Java状态模式详解 简介 Java状态模式是一个行为型设计模式,其可以通过改变对象内部的状态来改变对象的行为。这个模式可以在对象行为随状态改变的场景中实现。 适用场景 适用场景如下所示: 对于一个对象的某个行为,实现多种状态,这些状态之间能够相互转换。 当一个对象的行为依赖于它的状态,并且它需要在运行时根据状态改变其行为时。 模式结构 J…

    Java 2023年5月26日
    00
  • 微信小程序 ES6Promise.all批量上传文件实现代码

    让我来详细讲解一下“微信小程序 ES6Promise.all批量上传文件实现代码”的攻略过程。 先了解一下Promise.all 在了解如何使用ES6中的Promise.all实现批量上传文件之前,我们先来了解一下Promise.all的相关知识。 Promise.all是一个非常强大的方法,它可以将多个Promise实例包装成一个新的Promise实例。当…

    Java 2023年5月23日
    00
  • Java使用TCP实现在线聊天的示例代码

    Java使用TCP实现在线聊天的示例代码,步骤如下: 第一步:建立ServerSocket服务端 使用Java的ServerSocket类在服务端创建一个服务器,并设置监听端口号。 使用Socket类接受客户端连接请求,创建多线程,处理客户端请求。 示例代码如下: ServerSocket serverSocket = new ServerSocket(PO…

    Java 2023年5月23日
    00
  • Java入门基础之常规的命名方法和变量的值及其引用

    Java入门基础之常规的命名方法和变量的值及其引用 Java 是一种面向对象的编程语言,命名方法和变量的值及其引用都是 Java 程序中非常重要的基础概念。正确使用命名方法和变量值及其引用,可以帮助我们编写出更加可读性强、易于维护的 Java 代码。 命名方法 命名方法在编程语言中属于相对固定的规范。在 Java 中,命名方法需要遵循以下几个基本规则: 命名…

    Java 2023年5月26日
    00
  • kafka的消息存储机制和原理分析

    Kafka 的消息存储机制和原理分析 Kafka 是一个分布式的流数据处理平台,采用“发布-订阅”模式,支持高吞吐量、低延迟的消息传输。Kafka 的消息存储机制是其核心之一,本篇攻略将详细介绍 Kafka 的消息存储原理。 Kafka 的消息存储 Kafka 的消息存储是通过一个高效、可扩展、持久化的消息存储模块完成的,这个模块被称为“Kafka 服务器”…

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