Spring Data Jpa Maven 创建

1 Overview

Examples of practical now use spring-boot, here use the old way just to build the basic framework to build a spring review

 

2:pom

 

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dgw</groupId>
    <artifactId>dgw</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.26</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>5.2.2.RELEASE</version>
            <type>pom</type>
        </dependency>
        <!-- JPA -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <!-- C3P0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.10.Final</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.2.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.2.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

 

 3: Entity

@Table(name="JPA_PERSONS")
@Entity
public class Person {

    private Integer id;
    private String lastName;

    private String email;
    private Date birth;
    
    @GeneratedValue
    @Id
    public Integer getId() {
        return id;
    }

 

Main Repository achieve

public interface PersonRepository extends Repository<Person, Integer> {
    List<Person> findById(Integer id);
}

 

 

4: applicationContext.xml Configuration

<?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.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/spring-tx-4.0.xsd http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/context HTTP: / /www.springframework.org/schema/context/spring-context-4.0.xsd " > 

    ! <- package configuration automatically scan -> 
    < context: scan-Component Base-package =" Domain " > </ context: Scan-Component >  

    ! <- 1. configuration data source -> 
    < context: Property-placeholder LOCATION = "CLASSPATH: the db.properties" /> 

    < the bean ID = "the dataSource" 
        class = "com.mchange.v2.c3p0 .ComboPooledDataSource">
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>    
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        
        <!-- 配置其他属性 -->
    </bean>

    <!-- 2. 配置 JPA 的 EntityManagerFactory -->
    <bean id="entityManagerFactory" 
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
        </property>
        <property name="packagesToScan"value = "Domain" > </ Property > 
        < Property name = "jpaProperties" > 
            < The props > 
                <-! two cache coherency -> 
                <-!   
                <prop Key = "hibernate.cache.region.factory_class"> org.hibernate.cache.ehcache.EhCacheRegionFactory </ prop> 
                <prop Key = "net.sf.ehcache.configurationResourceName"> Ehcache-hibernate.xml </ prop> 
                -> 
                <-! column data table generated mapping strategies -> 
                < prop Key = "hibernate.ejb.naming_strategy" > org.hibernate.cfg.ImprovedNamingStrategy</prop>
                <!-- Hibernate basic properties -> 
                <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>

    <! - Configuration Transaction Manager -> 
    < the bean ID= "transactionManager" 
        class = "org.springframework.orm.jpa.JpaTransactionManager" > 
        < Property name = "entityManagerFactory" ref = "entityManagerFactory" > </ Property >     
    </ bean > 

    <-! 4. Configure transaction support annotations -> 
    < TX: Annotation-Driven Transaction Manager- = "the transactionManager" /> 

    <-! 5. the configuration SpringData -> 
    <-! added jpa namespace -> 
    <-! Base-Package: scanning Repository Bean is located Package Penalty for -> 
    <jpa:repositories base-package="domain"
        entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
</beans>

 

Creating xml form:

jdbc.user=root
jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost/jpatest?userSSL=true&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT 

5: Test methods

public class SpringTest {
    
    private ClassPathXmlApplicationContext context=null;
    
    {
        context=new ClassPathXmlApplicationContext("applicationContext.xml");
    }
    @Test
    public void testjap() {
        PersonRepository repository = context.getBean(PersonRepository.class);
        List<Person> id = repository.findById(1);
        for (Person person : id) {
            System.out.println(person);
        }
    }
    @Test
    public void testdataSources() throws SQLException {
        DataSource dataSource = context.getBean(DataSource.class);
        System.out.println(dataSource.getConnection());
    }
}

Guess you like

Origin www.cnblogs.com/dgwblog/p/12121696.html