SpringBoootの4:JPA

19380 ワード

一、JPAの基本概要
1、JPA(Java Persistence API:一つの規範)
JPAは、JDKの注記、XMLファイルを使用して、メモリ内のオブジェクトであるデータベース・テーブルのマッピング関係を記述し、1つのオブジェクトをデータベース・テーブルに永続化します.
2、Spring Data(一つのフレームワーク:JPA仕様の実現)
Spring Dataは、データベースへのアクセスをシンプル化し、クラウドサービスをサポートするオープンソースフレームワークです.主な目標は、データベースへのアクセスを容易にし、map-reduceフレームワークとクラウドコンピューティングデータサービスをサポートすることです.また、Oracle RACなどのリレーショナル・データベース・ベースのデータ・サービスもサポートします.大量のデータを持つプロジェクトについては、Spring Dataでプロジェクトの開発を簡素化することができ、Spring FrameworkがJDBC、ORMをサポートするように、Spring Dataはデータへのアクセスをより便利にすることができます.
3、Spring Data JPA(Spring Dataフレームの一つのモジュール)
Spring Dataはオープンソースフレームワークであり、このフレームワークでSpring Data JPAはこのフレームワークのモジュールの1つであるため、名前はSpring Data JPAと呼ばれている.JPA開発を単独で使用すると、このコード量はJDBC開発と同じように少し煩わしいことに気づくので、Spring Data JPAの登場は、JPAの書き方を簡略化するために、インタフェースを1つ作成してクラスを継承するだけでCRUD操作を実現することができます.
JPAの書き方を極めて簡略化し,ほとんど書き込みを行わずにデータへのアクセスと操作を実現できる.CRUDに加えて、ページング、ソートなどの一般的な機能も含まれています.
二、Spring Boot JPA-Hibernate配置手順
1、pom.xml oracle、spring-data-jpa依存を追加

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.examplegroupId>
    <artifactId>SpringBoot_JPAartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <packaging>jarpackaging>

    <name>SpringBoot_JPAname>
    <description>Demo project for Spring Bootdescription>

    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.0.RELEASEversion>
        <relativePath/> 
    parent>


    
    <properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <java.version>1.8java.version>
              
    properties>



    <dependencies>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.15version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <optional>trueoptional>
            <scope>truescope>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-jpaartifactId>
        dependency>



    dependencies>



    <build>
        <plugins>
            
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    
                    <fork>truefork>
                configuration>
            plugin>
        plugins>
    build>


project>

2、アプリケーションで.propertiesファイルでのOracle接続プロファイルの構成
#######################################################
###datasource :     
########################################################
spring.datasource.url = jdbc:oracle:thin************:orcl
spring.datasource.username = ****_test
spring.datasource.password = ****_test
spring.datasource.driverClassName = oracle.jdbc.driver.OracleDriver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10


########################################################
### Java Persistence Api --  
########################################################
# Specify the DBMS
spring.jpa.database = ORACLE
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
#[org.hibernate.cfg.ImprovedNamingStrategy  #org.hibernate.cfg.DefaultNamingStrategy]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect

三、Spring Boot JPA-Hibernate開発手順
1、エンティティークラスの作成
/**
 *         。
 * 
 *       ?
 * 
 * 1、  @Entity           , JPA            
 * @Entity      ,                。
 * 
 * 
 *                ?
 * 2、  @Id    .
 * 
 */
@Entity
public class Cat {

    /**
     *   @Id    .
     * 
     *     @GeneratedValue(strategy=GenerationType.AUTO)
     *          
     * 
     */
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    private String name;
    private Integer age;


    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 Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }


}

2、エンティティークラスを作成するインタフェース
public interface CatInterface extends CrudRepository<Cat, Integer> {

}

3、操作実体クラスのサービスクラスを作成する

@Service
public class CatService {

    @Resource
    private CatInterface catInterface;

    /**
     * save,update ,delete         .
     * 
     *   @Transactional       .
     * 
     */

    @Transactional
    public void save(Cat cat) {
        catInterface.save(cat);
    }

    @Transactional
    public void delete(Integer id) {
        catInterface.deleteById(id);
    }

    public Iterable getAll(){
        return catInterface.findAll();
    }
}

4、具体的な業務を作成するコントロールクラス

@RestController
@RequestMapping("/cat")
public class CatController {

    @Resource
    private CatInterface catInterface;

    @RequestMapping("/save")
    public String save(){
        Cat cat = new Cat();
        cat.setName("jack");
        cat.setAge(3);
        catInterface.save(cat);
        return "save ok...";
    }

    @RequestMapping("/delete")
    public String delete() {
        catInterface.deleteById(1);
        return "delete ok...";
    }

    @RequestMapping("/getAll")
    public Iterable getAll(){
        return catInterface.findAll();
    }
}

四、Spring Bootを起動する
@SpringBootApplication
public class SpringBootJpaApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootJpaApplication.class, args);
    }
}

Spring Bootプロジェクトを起動し、ページでContrllerクラスにアクセスする方法で対応するCRUD操作を実行できます.