javascript
java data jpa_Spring Data JPA(一)简介
Spring Data JPA介紹
可以理解為JPA規(guī)范的再次封裝抽象,底層還是使用了Hibernate的JPA技術(shù)實現(xiàn),引用JPQL(Java Persistence Query Language)查詢語言,屬于Spring整個生態(tài)體系的一部分。隨著Spring Boot和Spring Cloud在市場上的流行,Spring Data JPA也逐漸進(jìn)入大家的視野,它們組成有機(jī)的整體,使用起來比較方便,加快了開發(fā)的效率,使開發(fā)者不需要關(guān)心和配置更多的東西,完全可以沉浸在Spring的完整生態(tài)標(biāo)準(zhǔn)實現(xiàn)下。JPA上手簡單,開發(fā)效率高,對對象的支持比較好,又有很大的靈活性,市場的認(rèn)可度越來越高。
JPA是Java Persistence API的簡稱,中文名為Java持久層API,是JDK 5.0注解或XML描述對象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實體對象持久化到數(shù)據(jù)庫中。
JPA包括以下3方面的內(nèi)容:
(1)一套API標(biāo)準(zhǔn)。在javax.persistence的包下面,用來操作實體對象,執(zhí)行CRUD操作,框架在后臺替代我們完成所有的事情,開發(fā)者從煩瑣的JDBC和SQL代碼中解脫出來。
(2)面向?qū)ο蟮牟樵冋Z言:Java Persistence QueryLanguage(JPQL)。這是持久化操作中很重要的一個方面,通過面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的查詢語言查詢數(shù)據(jù),避免程序的SQL語句緊密耦合
(3)ORM(object/relational metadata)元數(shù)據(jù)的映射。JPA支持XML和JDK5.0注解兩種元數(shù)據(jù)的形式,元數(shù)據(jù)描述對象和表之間的映射關(guān)系,框架據(jù)此將實體對象持久化到數(shù)據(jù)庫表中。
Spring Data介紹
Spring? Data項目是從2010年發(fā)展起來的,從創(chuàng)立之初SpringData就想提供一個大家熟悉的、一致的、基于Spring的數(shù)據(jù)訪問編程模型,同時仍然保留底層數(shù)據(jù)存儲的特殊特性。它可以輕松地讓開發(fā)者使用數(shù)據(jù)訪問技術(shù),包括關(guān)系數(shù)據(jù)庫、非關(guān)系數(shù)據(jù)庫(NoSQL)和基于云的數(shù)據(jù)服務(wù)。
Spring Data Common是Spring Data所有模塊的公用部分,該項目提供跨Spring數(shù)據(jù)項目的共享基礎(chǔ)設(shè)施。它包含了技術(shù)中立的庫接口以及一個堅持java類的元數(shù)據(jù)模型。
Spring Data不僅對傳統(tǒng)的數(shù)據(jù)庫訪問技術(shù)JDBC、Hibernate、JDO、TopLick、JPA、Mybitas做了很好的支持、擴(kuò)展、抽象、提供方便的API,還對NoSQL等非關(guān)系數(shù)據(jù)做了很好的支持,包括MongoDB、Redis、Apache Solr等
Spring Data的子項目
Spring Data操作的主要特性
Spring Data項目旨在為大家提供一種通用的編碼模式。數(shù)據(jù)訪問對象實現(xiàn)了對物理數(shù)據(jù)層的抽象,為編寫查詢方法提供了方便。通過對象映射,實現(xiàn)域?qū)ο蠛统掷m(xù)化存儲之間的轉(zhuǎn)換,而模板提供的是對底層存儲實體的訪問實現(xiàn)。如圖1-4所示。操作上主要有如下特征:
提供模板操作,如Spring Data Redis和Spring Data Riak。
強(qiáng)大的Repository和定制的數(shù)據(jù)存儲對象的抽象映射。
對數(shù)據(jù)訪問對象的支持(Auting等)。
Spring Data JPA的主要類及結(jié)構(gòu)圖
七個Repository接口:
1.Repository
2.CrudRepository
3.PagingAndSortingRepository
4.QueryByExampleExecutor
5.JpaRepository
6.JpaSpeccificationExecutor
7.QueryDslPredicateExecutor
兩個實現(xiàn)類:
1.SimpleJpaRepository
2.QueryDslJpaRepository
關(guān)系結(jié)構(gòu)圖如圖1-5所示。
MySQL的快速開發(fā)實例
1.創(chuàng)建表
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.創(chuàng)建springboot項目
配置jpa、mysql、web依賴
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.projectlombok
lombok
3.配置application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/db_jpa?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
4.創(chuàng)建實體類
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
5.創(chuàng)建Repository
public interface UserRepository extends CrudRepository{
}
6.創(chuàng)建Controller
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/add")
public User addUser(@RequestParam String name,@RequestParam String email){
User user=new User();
user.setName(name);
user.setEmail(email);
return userRepository.save(user);
}
@GetMapping("/get")
public Iterable getAll(){
return userRepository.findAll();
}
}
7.運(yùn)行main方法
提示:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dia
問題:原來是Hibernate SQL方言沒有設(shè)置導(dǎo)致的,在properties文件中增加下面這行
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
總結(jié)
以上是生活随笔為你收集整理的java data jpa_Spring Data JPA(一)简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贷款利率有哪些常见的陷阱?如何计算真实的
- 下一篇: 原生JS动态计算输入框文本内容的宽度,当