Springboot+jpa自動生成テーブル、および発生する可能性のある問題

3171 ワード

SpringbootはJpaと組み合わせて表1の自動生成を実現し、Springboot+mavenプロジェクトを作成し、JPA依存とMySQL駆動を導入する

    mysql
    mysql-connector-java
    5.1.46
    runtime


    org.springframework.boot
    spring-boot-starter-data-jpa


(ここではmysqlドライバパッケージのバージョンに注意する、java.sql.S c u n g o n T r a n s i n t ConnectionException:CLIENT_PLUGIN_AUTH is requiredを引き起こす可能性がある)2、resourcesフォルダの下にアプリケーションを作成する.ymlファイル
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/******
    username: ******
    password: ******
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    ddl-auto:create----       ,         ,        
    
    ddl-auto:create-drop----             
    
    ddl-auto:update----      ,         ,         ,    
    
    ddl-auto:validate----                      ,     

三、エンティティークラスの作成(エンティティークラスがcom.exampleでエンティティークラスがcom.example.pojoであるように、エンティティークラスを起動クラスパッケージの下に構築する必要があることを覚えておいてください)、ここにエンティティークラスコードを貼り付けます
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name="t_user")
public class User implements Serializable {
    private static final long serialVersionUID = -561208975481652974L;
    @Id
    @GenericGenerator(name = "idGenerator",strategy = "uuid")
    @GeneratedValue(generator = "idGenerator")
    private String id;
    @Column(length = 32)
    private String username;
    @Column(length = 32)
    private String password;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

エンティティークラスの説明:
  • エンティティークラスのシーケンス化、すなわちSerializableインタフェース
  • の実装が必要である.
  • 注記はjavaxです.persistenceの
  • @Entity:エンティティクラスを宣言
  • @Table:エンティティとテーブルのマッピングを形成し、name属性はテーブル名を指定し、デフォルトはクラス名
  • を指定しない
  • @Id:宣言キー
  • @GenericGenerator:hibernateが提供するカスタムプライマリ・キー生成ポリシー・ジェネレータです.したがって、@GeneratedValueとともに使用する必要があります.また、@GeneratedValue注釈の「Generator」属性は@GenericGenerator注釈のname属性と一致し、strategy属性はhibernateのプライマリ・キー生成ポリシーを表し、@GenericGeneratorは13種類のポリシーをサポートします.ここで最も広く使われているuuid
  • GeneratedValue:2つの属性パラメータ:GenerationTypeタイプのstrategyとStringタイプのgenerator、generator@GenericGeneratorの「name」属性に対応し、「strategy」には4つのデフォルト値があり、ここにソースコード
  • が挿入されます.
    		package javax.persistence;
    		
    		public enum GenerationType {
    		    TABLE,//                 。 
    		    SEQUENCE,//               ,          。
    		    IDENTITY,//          (        ) 
    		    AUTO;//       
    		    
    		    private GenerationType() {
    		    }
    		}
    

    これで構成が完了し、起動すると自動的に生成されたテーブルが表示されます.