下面是详解spring整合hibernate的方法的完整攻略:
一、准备工作
1.1 项目结构
首先,我们需要新建一个Maven项目,并在其中引入Spring和Hibernate的相关依赖,具体的pom.xml
文件可以参考以下代码:
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- MySQL Connector/J -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
1.2 数据库准备
接着,我们需要在数据库中新建一个用户表,示例代码如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
二、整合过程
2.1 配置Spring上下文
我们需要在Spring的配置文件中添加三个部分的配置:
2.1.1 Datasource配置
我们在applicationContext.xml
文件中添加以下代码:
<!-- Datasource配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
2.1.2 SessionFactory配置
接着,在同样的文件中添加SessionFactory的配置信息:
<!-- SessionFactory配置 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.example.demo.entity"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
2.1.3 Hibernate事务管理器配置
最后,在applicationContext.xml
中添加一个Hibernate的事务管理器配置:
<!-- Hibernate事务管理器配置 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
2.2 创建Entity类
在本例中,我们新建一个User
类,代表数据库中的用户表:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", nullable = false)
private String password;
// 省略getter和setter方法
}
2.3 实现DAO层
我们需要编写DAO层代码,用于与数据库进行交互,代码实现可以参考以下示例:
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
private Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
@Override
public void save(User user) {
getCurrentSession().save(user);
}
@Override
public void delete(User user) {
getCurrentSession().delete(user);
}
@Override
public void update(User user) {
getCurrentSession().update(user);
}
@Override
public User getById(Long id) {
return getCurrentSession().get(User.class, id);
}
}
2.4 配置JDBC
最后,我们需要在application.properties
中添加以下JDBC连接信息配置:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false
jdbc.username=root
jdbc.password=root
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=update
至此,整合过程已经完成。
三、示例代码
下面是两个示例代码,分别描述了如何在Spring整合Hibernate的基础上,进行用户的增加和查询操作。
3.1 用户增加示例
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUser(User user) {
userDao.save(user);
}
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(path = "/user", method = RequestMethod.POST)
public String addUser(@RequestBody User user) {
userService.saveUser(user);
return "success";
}
}
3.2 用户查询示例
@RestController
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping(path = "/user/{id}", method = RequestMethod.GET)
public User getUserById(@PathVariable Long id) {
return userDao.getById(id);
}
}
希望我的回答能够帮助到你,如果还有什么问题,欢迎随时提出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解spring整合hibernate的方法 - Python技术站