Spring Boot / Thymeleaf / Hibernate:带有Java注释的Sessionfactory Bean
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Spring Boot / Thymeleaf / Hibernate:带有Java注释的Sessionfactory Bean,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4462字,纯文字阅读大概需要7分钟。
内容图文
![Spring Boot / Thymeleaf / Hibernate:带有Java注释的Sessionfactory Bean](/upload/InfoBanner/zyjiaocheng/703/aba163fe986c42d7a76f8b710600b20e.jpg)
我使用Thymeleaf和Hibernate创建了一个带有IntelliJ的Spring Boot Web应用程序.我到目前为止,我可以创建所有数据库连接,它工作正常.据我所知,将Sessionfactory作为bean并在所有执行db操作的服务类中自动装配它是一种好方法.
我有一个SpringMvcConfiguration作为配置文件,如下所示:
package eu.barz.familykurse.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import java.util.Locale;
@Configuration
public class SpringMvcConfiguration extends WebMvcConfigurerAdapter{
@Bean
public LocaleResolver localeResolver(){
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.GERMAN);
return sessionLocaleResolver;
}
@Bean
LocaleChangeInterceptor localeChangeInterceptor(){
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry interceptorRegistry){
interceptorRegistry.addInterceptor(localeChangeInterceptor());
}
}
问题:我已经尝试了很多,但我找不到为SessionFactory声明bean的解决方案.
任何提示都会非常有用.我应该在这里声明一个sessionfactory和datasource,还是必须在application.properties中,或者只在hibernate.cfg.xml中,它看起来像这样:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost:3306/family_kurse</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">username</property>
<property name="connection.password">secret</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="show_sql">true</property>
<mapping class="eu.barz.familykurse.domain.Leader"/>
<mapping class="eu.barz.familykurse.domain.Course"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
干杯麦克
解:
>我需要添加如下所述的bean
>我不得不补充一下
org.springframework
弹簧ORM
4.3.10.RELEASE
到我的pom.xml
>在@SpringBootApplication之后我不得不添加
@EnableAutoConfiguration(exclude = {HibernateJpaAutoConfiguration.class})
解决方法:
由于您使用的是spring boot,因此您应该使用XML free配置进行数据库配置.要将spring boot与hibernate集成,您需要创建LocalSessionFactoryBean,DataSource,HibernateTransactionManager和PersistenceExceptionTranslationPostProcessor bean,如下所示:
@Configuration
public class DatabaseConfig {
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("com.example.model");
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://localhost:5432/testdb");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.ddl-auto", "update");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
return properties;
}
}
在上面的数据库配置中我使用了postgreSQL数据库.
要像这样得到sessionFactory autowire SessionFactory接口的实例:
@Autowired
SessionFactory sessionFactory;
内容总结
以上是互联网集市为您收集整理的Spring Boot / Thymeleaf / Hibernate:带有Java注释的Sessionfactory Bean全部内容,希望文章能够帮你解决Spring Boot / Thymeleaf / Hibernate:带有Java注释的Sessionfactory Bean所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。