zoukankan      html  css  js  c++  java
  • 简单使用:spring boot整合spring Data JPA

      JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

    1.jpa具有什么优势?

    1)、标准化

      JPA JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。

    2)、容器级特性的支持

      JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

    3)、简单方便

      JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。

    4)、查询能力

      JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQLJava Persistence Query Language),JPQLEJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOINGROUP BYHAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

    5)、高级特性

      JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

    2.JPA注解

    注解

    作用

    @Entity

    声明类为实体或表

    @Table

    声明表名

    @Basic

    指定非约束明确的各个字段

    @Embedded

    指定类或它的值是一个可嵌入的类的实例的实体的属性

    @Id

    指定的类的属性,用于识别(一个表中的主键)

    @GeneratedValue

    指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值

    @Transient

    指定的属性,它是不持久的,即:该值永远不会存储在数据库中

    @Column

    指定持久属性栏属性

    @SequenceGenerator

    指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列

    @TableGenerator

    指定在@GeneratedValue批注指定属性的值发生器。它创造了的值生成的表

    @AccessType

    这种类型的注释用于设置访问类型。如果设置@AccessTypeFIELD),则可以直接访问变量并且不需要gettersetter,但必须为public。如果设置@AccessTypePROPERTY),通过gettersetter方法访问Entity的变量

    @JoinColumn

    指定一个实体组织或实体的集合。这是用在多对一和一对多关联

    @UniqueConstraint

    指定的字段和用于主要或辅助表的唯一约束

    @ColumnResult

    参考使用select子句的SQL查询中的列名

    @ManyToMany

    定义了连接表之间的多对多一对多的关系

    @ManyToOne

    定义了连接表之间的多对一的关系

    @OneToMany

    定义了连接表之间存在一个一对多的关系

    @OneToOne

    定义了连接表之间有一个一对一的关系

    @NamedQueries

    指定命名查询的列表

    @NamedQuery

    指定使用静态名称的查询

    1.依赖:

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version>
    </dependency>

    2.配置文件

    application.properties
    #DB Configation
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=2119
    # JPAConfiguration
    spring.jpa.database=mysql
    spring.jpa.show-sql=true
    spring.jpa.generate-ddl=true

    application.yml
    spring:
    datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 2119
    jpa:
    database: mysql
    show-sql: true
    generate-ddl: true
    freemarker:
    suffix: .ftl

    3.实体类:

    @Entity
    @Table(name="user")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
        private String username;
        private String password;
        private String name;
    }

    4.数据访问接口:

    public interface UserDao extends JpaRepository<User,Integer>{
    
    }
  • 相关阅读:
    Unicode下CString(wchar_t)转换为 char*
    安装程序制作(转)
    STL头文件
    杭电2043 请大神帮我看看哪错了?谢谢了!
    杭电2046
    杭电2044
    实现winform中的treeview控件部分节点显示checkbox,部分节点不显示checkbox的功能
    实现将sqlserver2000的多张表导出到access,并压缩,并导入压缩的access文件到sqlserver2000
    从Excel中指定的sheet名称或索引读取数据到DataTable,以便用户更改sheet名称后仍能读取数据
    combobox控件实现多列显示
  • 原文地址:https://www.cnblogs.com/crazy-lc/p/11801373.html
Copyright © 2011-2022 走看看