學習spring data jpa記錄配置過程以及配置文件,已備之後迅速上手。大概作了一個小demo。比較簡陋,之後再繼續完善這個小demo。java
1.pom依賴引入,很是重要。mysql
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>lpp</groupId> 8 <artifactId>spring_data_jpa</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 11 <!-- 全局屬性配置 --> 12 <properties> 13 <project.source.encoding>utf-8</project.source.encoding> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 <!-- 防止控制輸出臺中文亂碼 --> 16 <argLine>-Dfile.encoding=UTF-8</argLine> 17 </properties> 18 19 <dependencies> 20 <!-- junit_jar包依賴 --> 21 <dependency> 22 <groupId>junit</groupId> 23 <artifactId>junit</artifactId> 24 <version>4.11</version> 25 <!--保留到測試 --> 26 <scope>test</scope> 27 </dependency> 28 <!-- spring-data-jpa相關依賴 29 (這個依賴自動把一堆spring的東西依賴進來了,全部能夠不須要再引入spring的包)--> 30 <dependency> 31 <groupId>org.springframework.data</groupId> 32 <artifactId>spring-data-jpa</artifactId> 33 <version>1.11.7.RELEASE</version> 34 </dependency> 35 <!-- Hibernate --> 36 <dependency> 37 <groupId>org.hibernate</groupId> 38 <artifactId>hibernate-core</artifactId> 39 <version>5.0.11.Final</version> 40 </dependency> 41 <dependency> 42 <groupId>org.hibernate</groupId> 43 <artifactId>hibernate-entitymanager</artifactId> 44 <version>5.0.11.Final</version> 45 </dependency> 46 <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> 47 <dependency> 48 <groupId>com.mchange</groupId> 49 <artifactId>c3p0</artifactId> 50 <version>0.9.5.2</version> 51 </dependency> 52 <!-- mysql驅動 --> 53 <dependency> 54 <groupId>mysql</groupId> 55 <artifactId>mysql-connector-java</artifactId> 56 <version>5.1.29</version> 57 </dependency> 58 59 <dependency> 60 <groupId>log4j</groupId> 61 <artifactId>log4j</artifactId> 62 <version>1.2.17</version> 63 </dependency> 64 65 </dependencies> 66 </project>
2.spring.xml配置spring
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 配置自動掃描的包,掃描service層,service上面有註解就直接被spring容器實例化 --> <context:component-scan base-package="com.lpp.jpa.dao"/> <!--引入jdbc配置文件--> <context:property-placeholder location="jdbc.properties"/> <!-- 1. 配置數據源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driverClass}"/> <property name="jdbcUrl" value="${jdbcurl}"/> <property name="user" value="${user}"/> <property name="password" value=""/> </bean> <!-- 2. 配置 JPA 的 EntityManagerFactory --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> </property> <!-- 配置包掃描,掃描實體 --> <property name="packagesToScan" value="com.lpp.jpa.entity"/> <property name="jpaProperties"> <props> <!-- 生成的數據表的列的映射策略 --> <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop> <!-- hibernate 基本屬性 --> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <!-- 3. 配置事務管理器 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!-- 4. 配置支持註解的事務 --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 5. 配置 SpringData,須要加入 jpa 的命名空間 --> <!-- base-package: 掃描 Repository Bean 所在的 package --> <jpa:repositories base-package="com.lpp.jpa.dao" entity-manager-factory-ref="entityManagerFactory"> </jpa:repositories> </beans>
3.entity實體類,相關注解已經在以前的博文中說明了。這裏就簡單應用一下。sql
package com.lpp.jpa.entity; import javax.persistence.*; import java.io.Serializable; import java.util.Date; /** * Created with IntelliJ IDEA. * Description: * User: lpp * Date: 2018-05-02 * Time: 15:11 */ @Entity @Table(name="jpa_persons") public class Person implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; @Column private String name; @Column private String email; /** setter and getter method */ public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
4.personDao 這裏是dao層實現,以後會介紹一下這裏面代碼書寫的一些規則。這裏先就寫一個簡單的查詢方法。做爲測試。數據庫
package com.lpp.jpa.dao; import com.lpp.jpa.entity.Person; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** * Created with IntelliJ IDEA. * Description: * User: lpp * Date: 2018-05-02 * Time: 21:08 */ public interface PersonDao extends JpaRepository<Person,Integer> { public Person findOneById(int id); }
5.接下來是測試方法。apache
import com.lpp.jpa.dao.PersonDao; import com.lpp.jpa.entity.Person; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.sql.SQLException; /** * Created with IntelliJ IDEA. * Description: * User: lpp * Date: 2018-05-02 * Time: 15:04 */ public class test { private static ApplicationContext ctx; static { ctx = new ClassPathXmlApplicationContext("classpath:Spring.xml"); } @Test public void testDataSource () throws SQLException { // DataSource dataSource= (DataSource) ctx.getBean("dataSource"); PersonDao personDao = ctx.getBean(PersonDao.class); Person p = new Person(); /* p.setId(1); p.setName("lpp"); p.setEmail("763330789@qq.com"); personDao.saveAndFlush(p);*/ p = personDao.findOneById(1); System.out.println(p); } }
運行測試方法,數據庫會自動生成person表,先執行註釋離得內容插入一條數據。在運行查詢方法,就能夠查詢到數據庫裏的數據了。接下來會寫一篇spring data jpadao層方法的書寫規範。curl