gpt4 book ai didi

mysql - 使用 Hibernate 将 Spring Boot 与 Mysql 集成

转载 作者:行者123 更新时间:2023-11-29 17:18:43 30 4
gpt4 key购买 nike

我是 springboot 和 hibernate 的新手,无法弄清楚不同的注释,并且我知道对于数据库属性等其他设置,资源文件夹中有一个名为 application.properties 的文件,我们可以在其中设置数据库 url、用户名、密码等。

application properties
#Database
db.driver: com.mysql.jdbc.Driver
db.url: jdbc:mysql://localhost:3306/scm
db.username: root
db.password: password
# Hibernate
hibernate.dialect: org.hibernate.dialect.MySQLDialect
hibernate.show_sql: true
hibernate.hbm2ddl.auto: create

但是我遇到了一个文件 DatabaseConfiguration.java,其中包含类似这样的代码。

import java.util.Properties;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
public class HibernateConfiguration {

@Value("${db.driver}")
private String DB_DRIVER;

@Value("${db.password}")
private String DB_PASSWORD;

@Value("${db.url}")
private String DB_URL;

@Value("${db.username}")
private String DB_USERNAME;

@Value("${hibernate.dialect}")
private String HIBERNATE_DIALECT;

@Value("${hibernate.show_sql}")
private String HIBERNATE_SHOW_SQL;

@Value("${hibernate.hbm2ddl.auto}")
private String HIBERNATE_HBM2DDL_AUTO;

@Value("${entitymanager.packagesToScan}")
private String ENTITYMANAGER_PACKAGES_TO_SCAN;

@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN);
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
sessionFactory.setHibernateProperties(hibernateProperties);
return sessionFactory;
}

@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(DB_DRIVER);
dataSource.setUrl(DB_URL);
dataSource.setUsername(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);
return dataSource;
}

@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory().getObject());
return txManager;
}

}

为什么我要两次提到数据库属性(在应用程序属性中,DatabaseConfig.java)

为什么我要为上述方法提供@Bean注解以及@Bean@Autowire注解之间的关系是什么

有一些像@UserDao这样的 Autowiring 注释没有提供@Bean注释,那么它是如何被接受的,而对于sessionFactory Autowiring 我应该提供像bean这样的接受。

 package com.candidjava.spring.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.candidjava.spring.bean.User;
import com.candidjava.spring.dao.UserDao;

@Service
@Transactional
public class UserServiceImp implements UserService {
@Autowired
UserDao userDao;


public List<User> getUser() {
// TODO Auto-generated method stub
return userDao.getUser();
}

public User findById(int id) {
// TODO Auto-generated method stub
return userDao.findById(id);
}

public void createUser(User user) {
// TODO Auto-generated method stub
userDao.addUser(user);
}

public void deleteUserById(int id) {
// TODO Auto-generated method stub
userDao.delete(id);
}
@Override
public User updatePartially(User user, int id) {
userDao.updateCountry(user,id);
return userDao.findById(id);
}

@Override
public User update(User user,int id) {
// TODO Auto-generated method stub
return userDao.update(user, id);
}

}

请解释一下DatabaseConfig中使用的@value等注解以及什么是HibernateTransactionmanager,为什么需要它。

最佳答案

我更喜欢使用 application.properties 来配置我的 Spring Boot 应用程序,这是一种更有效的维护方式,甚至可以定义比配置文件更多的内容。

您的示例 DatabaseConfiguration.java 文件是一种强制应用程序以编程方式读取属性的方法,并且还可以根据需要添加一些逻辑。

关于mysql - 使用 Hibernate 将 Spring Boot 与 Mysql 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51389901/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com