美文网首页
SpringBoot JPA入门学习

SpringBoot JPA入门学习

作者: cctN | 来源:发表于2018-10-25 08:14 被阅读44次

SpringBoot JPA

一 JPA是什么

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.
JPA由三个不同的组件构成:

  • 实体(Entities): 在当前版本的JPA中实体是普通Java对象(POJO)。老版本的JPA中实体类需要继承JPA提供的实体基类,但是这样的设计导致框架中存在了严重的依赖关系,测试变得更加困难;所以在新版JPA中不再要求实体类继承任何框架类。
  • 对象-关系型元数据(Object-relational metadata): 应用程序的开发者们必须正确设定Java类和它们的属性与数据库中的表和列的映射关系。有两种设定方式:通过特定的配置文件建立映射;或者使用在新版本中支持的注解.
  • Java持久化查询语句(Java Persistence Query Language - JPQL): 因为JPA旨在建立不依赖于特定的数据库的抽象层,所以它也提供了一种专有查询语言来代替SQL。 这种由JPQL到SQL语言的转换,为JPA提供了支持不同数据库方言的特性,使得开发者们在实现查询逻辑时不需要考虑特定的数据库类型。

二 模仿豆瓣读书进行JPA 配置

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>

        </dependency>
    </dependencies>

三 实体类

@Data
@Entity
public class Book {
    @Id
    @GeneratedValue
    private Integer id;
    private String avatar;
    private String name;
    private String author;
    private String type;
    private String remark;
    private String publish;
    private String pages;
    private String price;
}

@Entity
对实体注释。任何Hibernate映射对象都要有这个注释
@Id
声明此属性为主键。该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成
@GeneratedValue
指定主键的生成策略。有如下四个
TABLE:使用表保存id值
IDENTITY:identitycolumn
SEQUENCR :sequence
AUTO:根据数据库的不同使用上面三个
注解@Id和@GeneratedValue用于告诉JPA该值是主键,而且会自动生成。
然后运行 application 数据库表会自动生成

四 controller层代码

@Controller
@RequestMapping(value = "/book")
public class BookController {
    //用常量定义跳转的页面名称
    private static final String BOOK_DETAIL_PATH_NAME = "bookDetail";
    private static final String BOOK_LIST_PATH_NAME = "bookList";
    @Resource
    private BookService bookService;

    @GetMapping("/all")
    public String getBookList(ModelMap map) {
        map.addAttribute("bookList", bookService.getAll());
        return BOOK_LIST_PATH_NAME;
    }

    @GetMapping(value = "/{id}")
    public String getBook(@PathVariable Integer id, ModelMap map) {
        map.addAttribute("book", bookService.getId(id));
        return BOOK_DETAIL_PATH_NAME;
    }
}

@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到特定的处理方法上。
从数据库获取数据然后进行渲染 ,然后根据书籍id跳转页面

最后附上GitHub代码

相关文章

网友评论

      本文标题:SpringBoot JPA入门学习

      本文链接:https://www.haomeiwen.com/subject/thtqtqtx.html