什么jpa
Java Persistence API:用于对象持久化的 API
Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层
JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。
集成jpa实现对图书的查询小案例
springboot采用2.0.0版本
1.导入相关依赖
1 <!--web应用--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-web</artifactId> 5 </dependency> 6 7 <!--测试--> 8 <dependency> 9 <groupId>org.springframework.boot</groupId> 10 <artifactId>spring-boot-starter-test</artifactId> 11 <scope>test</scope> 12 </dependency> 13 14 <!--freemarker支持--> 15 <dependency> 16 <groupId>org.springframework.boot</groupId> 17 <artifactId>spring-boot-starter-freemarker</artifactId> 18 </dependency> 19 20 <!-- mysql驱动 --> 21 <dependency> 22 <groupId>mysql</groupId> 23 <artifactId>mysql-connector-java</artifactId> 24 </dependency> 25 26 <!--整合jpa--> 27 <dependency> 28 <groupId>org.springframework.boot</groupId> 29 <artifactId>spring-boot-starter-data-jpa</artifactId> 30 </dependency>
2.application.properties
1 spring.datasource.url=jdbc:mysql://localhost:3306/bookshop 2 spring.datasource.username=root 3 spring.datasource.password=123 4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3.entity层
1 @Entity(name = "book") 2 @JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) 3 public class Book { 4 @Id 5 @GeneratedValue 6 private Integer bookid; 7 @Column 8 private String bookname; 9 @Column 10 private Integer bookprice; 11 12 get set方法省略。。 13 }
4.dao层 继承JpaRepository
1 public interface IBookDAO extends JpaRepository<Book,Integer> { 2 }
5.controller层
1 @Controller 2 public class BookController { 3 @Autowired 4 private IBookDAO bookDAO; 5 6 @RequestMapping("/getBookById") 7 @ResponseBody 8 public Book getJpaBookById(Integer bookid) { 9 return bookDAO.getOne(bookid); 10 } 11 }
6.启动项目
错误解析:
1.需在controller层的查询方法上加上@ResponseBody注解,解析成json格式 加完之后还是报错。。。
在实体类上加入@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) 在网上查询作用是忽略一些属性转为json格式
到此集成jpa结束。。。。