hibernate,import.sql

博客提到在classpath里添加import.sql,涉及SQL相关操作,可能与数据库数据导入等功能有关,同时标签包含Hibernate,推测可能在Hibernate框架下进行数据库操作。

在classpath里加 import.sql

package com.aiearth.drone.config; import com.aiearth.drone.security.DataSource.UmspscDataSource; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.env.Environment; import org.springframework.orm.hibernate5.HibernateTransactionManager; import org.springframework.orm.hibernate5.LocalSessionFactoryBean; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.interceptor.*; import javax.sql.DataSource; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Properties; @Configuration @EnableTransactionManagement @ComponentScan(basePackages = {"com.aiearth.drone.dao", "com.aiearth.pojo", "com.aiearth.drone.service"}) // 根据需要调整扫描路径 public class HibernatePostgisConfig { @Autowired private Environment env; @Bean(name = "entityManagerFactory") @Primary public LocalContainerEntityManagerFactoryBean entityManagerFactory() { System.setProperty("hibernate.query.escape_like_parameter", "false"); LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); // 扫描实体类路径(与Hibernate的packagesToScan一致) em.setPackagesToScan("com.aiearth.pojo"); em.setDataSource(dataSource()); // 使用Hibernate作为JPA实现 HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); // 配置JPA属性(复用Hibernate的方言等配置) Properties properties = new Properties(); // properties.setProperty("hibernate.dialect", "org.hibernate.spatial.dialect.postgis.PostgisPG10Dialect"); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); properties.setProperty("hibernate.show_sql", "true"); properties.setProperty("hibernate.query.sql.escape-identifier", "false"); properties.setProperty("hibernate.format_sql", "false"); properties.setProperty("hibernate.use_sql_comments", "false"); properties.setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false"); em.setJpaProperties(properties); return em; } // 数据源配置 @Bean(name = "dataSource") public DataSource dataSource() { UmspscDataSource dataSource = new UmspscDataSource(); dataSource.setDriverClassName("org.postgresql.Driver"); dataSource.setJdbcUrl(env.getProperty("drone.jdbc.url") + "?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&stringtype=unspecified"); dataSource.setUsername(env.getProperty("drone.jdbc.username")); dataSource.setPassword(env.getProperty("drone.jdbc.password")); dataSource.setConnectionTimeout(30000); dataSource.setIdleTimeout(180000); dataSource.setMaximumPoolSize(30); dataSource.setMinimumIdle(10); dataSource.setMaxLifetime(1200000); dataSource.setConnectionTestQuery("SELECT 1"); // 添加日志输出 System.out.println("DataSource configured with URL: " + dataSource.getJdbcUrl()); System.out.println("Username: " + dataSource.getUsername()); return dataSource; } // SessionFactory 配置 @Bean(name = "sessionFactory") // @Primary public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan("com.aiearth.drone.dao", "com.aiearth.pojo"); Properties hibernateProperties = new Properties(); hibernateProperties.setProperty("hibernate.query.sql.escape-identifier", "false"); // hibernateProperties.setProperty("hibernate.show_sql", "false"); // hibernateProperties.setProperty("hibernate.format_sql", "false"); // hibernateProperties.setProperty("hibernate.use_sql_comments", "false"); // hibernateProperties.setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false"); sessionFactory.setHibernateProperties(hibernateProperties); return sessionFactory; } // 事务管理器配置 @Bean(name = "transactionManager") @Primary public PlatformTransactionManager transactionManager() { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(sessionFactory().getObject()); return txManager; } // 事务通知配置 @Bean public TransactionInterceptor txAdvice() { NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource(); RuleBasedTransactionAttribute readOnlyTx = new RuleBasedTransactionAttribute(); readOnlyTx.setReadOnly(true); readOnlyTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); RuleBasedTransactionAttribute requiredTx = new RuleBasedTransactionAttribute(); requiredTx.setRollbackRules(Collections.singletonList(new RollbackRuleAttribute(Exception.class))); requiredTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); Map<String, TransactionAttribute> txMap = new HashMap<>(); txMap.put("get*", readOnlyTx); txMap.put("count*", readOnlyTx); txMap.put("find*", readOnlyTx); txMap.put("list*", readOnlyTx); txMap.put("*", requiredTx); source.setNameMap(txMap); TransactionInterceptor txAdvice = new TransactionInterceptor(); txAdvice.setTransactionManager(transactionManager()); txAdvice.setTransactionAttributeSource(source); return txAdvice; } // AOP 配置 @Bean public Advisor txAdviceAdvisor() { AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); pointcut.setExpression("execution(* com.aiearth..*.service..*Service.*(..))"); return new DefaultPointcutAdvisor(pointcut, txAdvice()); } // 如果需要,可以添加其他 Bean 配置,例如 PropertySourcesPlaceholderConfigurer /* @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); }*/ } 我这样配在bean里对吗,我这样设置并没有生效
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值