spring-data-jpa学习(一)环境配置1.3
来源:互联网 发布:淘宝答题答案 编辑:程序博客网 时间:2024/05/09 09:54
3.PersistenceConfig.class
package test.persistence;@Configuration@ComponentScan(basePackages = "test.persistence")@EnableTransactionManagement@EnableJpaRepositories("test.persistence.repository")@PropertySource(value = { "classpath:/META-INF/db.properties" })public class PersistenceConfig {private DataSource preferentialDataSource;private static final String PROPERTY_NAME_DATABASE_DRIVER = "connection.driver_class";private static final String PROPERTY_NAME_DATABASE_URL = "connection.url";private static final String PROPERTY_NAME_DATABASE_USERNAME = "connection.username";private static final String PROPERTY_NAME_DATABASE_PASSWORD = "connection.password";private static final String PROPERTY_NAME_DATABASE_DDL="hbm2ddl.auto";private static final String ENTITY_PACKAGE = "test.persistence.model";@Autowiredprivate Environment environment;private EntityManager entityManager;protected LocalContainerEntityManagerFactoryBean entityManagerFactory;private PlatformTransactionManager annotationDrivenTransactionManager;@Bean(name="entityManagerFactory")public synchronized LocalContainerEntityManagerFactoryBean getEntityManager() {if (this.entityManagerFactory == null) {LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();HibernateJpaVendorAdapter hibernateJpaVendorAdapter=new HibernateJpaVendorAdapter();hibernateJpaVendorAdapter.setGenerateDdl(true);hibernateJpaVendorAdapter.setShowSql(true);factoryBean.setJpaVendorAdapter(hibernateJpaVendorAdapter);factoryBean.setDataSource(this.getPreferentialDataSource());final Properties jpaProperties = new Properties();jpaProperties.put(PROPERTY_NAME_DATABASE_DDL, this.environment.getRequiredProperty(PROPERTY_NAME_DATABASE_DDL));factoryBean.setJpaProperties(jpaProperties);factoryBean.setPackagesToScan(ENTITY_PACKAGE);this.entityManagerFactory = factoryBean;}return this.entityManagerFactory;}//事务管理@Bean(name = "transactionManager")public synchronized PlatformTransactionManager annotationDrivenTransactionManager() {if (this.annotationDrivenTransactionManager == null) {final JpaTransactionManager jpaTxManager = new JpaTransactionManager();jpaTxManager.setEntityManagerFactory(this.entityManagerFactory.getNativeEntityManagerFactory());jpaTxManager.setJpaDialect(new EclipseLinkJpaDialect());this.annotationDrivenTransactionManager = jpaTxManager;}return this.annotationDrivenTransactionManager;}@Bean(destroyMethod = "close")public synchronized DataSource getPreferentialDataSource() {if (this.preferentialDataSource == null) {final HikariConfig dataSourceConfig = new HikariConfig();dataSourceConfig.setDriverClassName(this.environment.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));dataSourceConfig.setJdbcUrl(this.environment.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));dataSourceConfig.setUsername(this.environment.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));dataSourceConfig.setPassword(this.environment.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));this.preferentialDataSource = new HikariDataSource(dataSourceConfig);}return this.preferentialDataSource;}@Bean@Primarypublic synchronized EntityManager entityManager() {if (this.entityManager == null) {this.entityManager = SharedEntityManagerCreator.createSharedEntityManager(this.entityManagerFactory.getNativeEntityManagerFactory());}return this.entityManager;}@Beanpublic JdbcTemplate jdbcTemplate() throws SQLException {return new JdbcTemplate(this.getPreferentialDataSource());}@Beanpublic NamedParameterJdbcTemplate namedParameterJdbcTemplate()throws SQLException {return new NamedParameterJdbcTemplate(this.getPreferentialDataSource());}}
工程混合jdbc和jpa使用,这里既配置了jdbc,也配置了jpa,并且进行了事务管理。
DataSource的配置是公用的,jdbc和jpa都要用到它,jdbcTemplate和NamedParameterJdbcTemplate都是用于jdbc连接的,jdbc是一种比较古老的方式了,这里简单学习一下jpa配置的基础知识。
JPA定义了两种类型的实体管理器,分别是应用程序管理类型和容器管理类型。
1.应用程序管理类型
应用程序管理类型的管理器需要在persistence.xml中进行配置,并用LocalEntityManagerFactoryBean来注入,例如,
在persistence.xml中配置基础信息
在spring中注入LocalEntityManagerFactoryBean
2.容器管理类型
容器管理类型的JPA不需要配置persistence.xml了,而是使用LocalContainerEntityManagerFactoryBean来创建entitymanager。它的注入也很简单,只需指明datasource和jpavendoradapter即可。
创建好EntityManagerFactory之后就可以创建EntityManager啦。
事务管理也有很多方式实现,这里使用了JPA的事务管理器
0 0
- spring-data-jpa学习(一)环境配置1.3
- spring-data-jpa学习(一)环境配置1.1
- spring-data-jpa学习(一)环境配置1.2
- Spring Data JPA环境配置
- Spring Data JPA 学习笔记(一)
- Spring Data JPA学习一
- 跟着问题学习Spring Data Jpa----Spring Data Jpa配置
- Spring Data JPA 实战(一)-体系结构及基本配置
- 一步步学习 Spring Data 系列之JPA(一)
- 一步步学习 Spring Data 系列之JPA(一)
- spring-data-jpa 学习笔记一(转)
- Spring Data Jpa开发学习笔记(一)
- jpa学习3-spring data jpa 入门环境搭建
- spring data jpa(一)
- spring data JPA 配置
- spring data JPA 配置
- spring data jpa 配置
- Spring Data JPA配置
- eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
- Hibernate中设置实体的属性为当前系统时间
- 关于图片解压缩,导致scrollView滚动卡顿
- 《精进—如何成为一个很厉害的人》摘录(更新中……)
- 产品运营的基本思路是什么?
- spring-data-jpa学习(一)环境配置1.3
- session验证并跳转至登录页面的总结
- LINUX_端口加到防火墙
- [分享] 微信支付中商户对个人用户付款案例
- mysql日期函数的使用
- 默认样式重置及及display转换
- web乱码解决方案
- java-maven-多模块拆分构建项目
- 使用muJava进行变异测试