title: 如何單獨使用spring data jpa
引用pom文件:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>2.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.3.5.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>5.3.5.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency>
編寫配置類:
package com.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import javax.persistence.EntityManagerFactory; import java.util.Properties; /** * @author Zhai * 2019/04/02 15:10 */ @Configuration @ComponentScan(basePackages = {"com"}) // 指定Repository所在的包 @EnableJpaRepositories(basePackages = {"com.domain"}) public class JpaConfig { // 名字必須是entityManagerFactory,或者把@bean中name屬性設置為entityManagerFactory @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); // 設置數據庫(如果在hibernate中配置了連接池,則不需要設置) // em.setDataSource(dataSource()); // 指定Entity所在的包 em.setPackagesToScan("com.domain"); JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); // 配置屬性 Properties properties = new Properties(); properties.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver"); properties.setProperty("hibernate.connection.url", "jdbc:mysql://10.8.3.38:3306/test"); properties.setProperty("hibernate.connection.username", "root"); properties.setProperty("hibernate.connection.password", "root"); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); properties.setProperty("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider"); properties.setProperty("hibernate.c3p0.min_size", "1"); properties.setProperty("hibernate.c3p0.max_size", "10"); properties.setProperty("hibernate.hbm2ddl.auto", "create"); properties.setProperty("hibernate.show_sql", "true"); properties.setProperty("format_sql", "true"); em.setJpaProperties(properties); return em; } // 名字必須是transactionManager,或者把@bean中name屬性設置為transactionManager @Bean public PlatformTransactionManager transactionManager( EntityManagerFactory emf) { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(emf); return transactionManager; } }
測試代碼:
package com; import com.config.JpaConfig; import com.domain.Student; import com.domain.StudentRepository; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; /** * @author Zhai * 2019/04/02 14:27 */ public class JpaTest { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(JpaConfig.class); // 獲取repository StudentRepository studentRepository = context.getBean(StudentRepository.class); Student student1 = new Student(); studentRepository.save(student1); List<Student> students = studentRepository.findAll(); System.out.println(students); } }