1、Spring Data JPA、Hibernate与JPA的区别是什么?
(1)Hibernate与JPA的区别
简而言之:Hibernate ORM是JPA规范的一个实现。
hibernate是持久化实现技术,而jpa是持久化的标准,一个是具体实现,一个是接口协议,当然spring data jpa是在hibernate的基础上更上层的封装实现。
目前比较成熟的 JPA 框架主要包括 Jboss 的 Hibernate EntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink、Apache 的 OpenJPA 等。
(2)Spring Data JPA和JPA的区别
Spring Data JPA 是在JPA规范的基础下提供了Repository层的实现,但是使用那一款ORM需要你自己去决定。
虽然ORM框架都实现了JPA规范,但是在不同ORM框架之间切换是需要编写的代码有一些差异,而通过使用Spring Data Jpa能够方便大家在不同的ORM框架中间进行切换而不要更改代码。并且Spring Data Jpa对Repository层封装的很好,可以省去不少的麻烦。
2、使用JPA直接查数据库中的bigint类型,会映射为java的BigInteger类型。
3 Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。
(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet
(2)创建:通过调用servlet构造函数创建一个servlet对象
(3)初始化:调用init方法初始化
(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求
(5)卸载:调用destroy方法让servlet自己释放其占用的资源
4、定义bean:@Component @Repository @Service @Controller @RestController
5、Spring Data JPA
(1)实体映射类,在Date类型字段上加@CreationTimestamp和@UpdateTimestamp可以自动的给表添加创建时间和更新时间。
(2)将各个实体中重复的字段抽出来一个BaseEntity,并标记上@MappedSuperclass,其他实体继承BaseEntity。相应的,在@ToString(callSuper=true)可以打印父类中的实体信息。而且在Dao层,定义一个BaseDao,让其他Dao继承BaseDao可以实现一些公共的dao操作方法。
(3)@Enumerated定义每局类型字段
(4)商品金额字段使用joda.money类表示。在字段上方添加@JsonSerialize和@JsonDeserialize进行序列化和反序列化。实现实体类字段和数据库字段的相互转换。
6 spring mvc
配置前端到DTO的实体转换:定义一个Formatter的实现类,重写parse和print方法。或者添加自定义的Converter/GenericConverter
7 Spring装配bean
spring装配bean的三种机制:
(1)在XML中进行显式配置
(2)在Java中进行显式配置
(3)隐式的bean发现机制和自动装配
组件扫描(component scanning)+自动装配(autowiring)
推荐指数自动配置>Java配置>XML配置
8 spring data jpa分页page从0开始