搭建簡(jiǎn)單的Spring-Data JPA項(xiàng)目
一、 JPA概述
JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的規(guī)范,內(nèi)部是由一系列的接口和抽象類構(gòu)成。
JPA通過(guò)JDK 5.0注解描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。
二、jpa_demo
step1:首先導(dǎo)入需要的依賴
<dependencies> ????????<!-- junit --> ????????<dependency> ????????????<groupId>junit</groupId> ????????????<artifactId>junit</artifactId> ????????????<version>4.12</version> ????????????<scope>test</scope> ????????</dependency> ????????<!-- hibernate對(duì)jpa的支持包 --> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.hibernate</groupId> ? ? ? ? ? ? <artifactId>hibernate-entitymanager</artifactId> ? ? ? ? ? ? <version>5.6.3.Final</version> ? ? ? ? </dependency> ????????<!-- c3p0 --> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.hibernate</groupId> ? ? ? ? ? ? <artifactId>hibernate-c3p0</artifactId> ? ? ? ? ? ? <version>5.6.1.Final</version> ? ? ? ? </dependency> ????????<!-- log日志 --> ????????<dependency> ????????????<groupId>log4j</groupId> ????????????<artifactId>log4j</artifactId> ????????????<version>1.2.17</version> ????????</dependency> ? ? ? ?? ????????<!-- Mysql and MariaDB --> ????????<dependency> ????????????<groupId>mysql</groupId> ????????????<artifactId>mysql-connector-java</artifactId> ????????????<version>5.1.6</version> ????????</dependency> ????</dependencies>
step2:編寫(xiě)實(shí)體類和數(shù)據(jù)庫(kù)表的映射配置[重點(diǎn)]
以客戶實(shí)體類為例(包含字段:custId,custName,custPhone)
在實(shí)體類上使用JPA注解的形式配置映射關(guān)系
@Entity
@Table(name="cst_customer")
public class Customer {
????@Id
????@GeneratedValue(strategy=GenerationType.IDENTITY)?
????@Column(name="cust_id")
????private Long custId;
????@Column(name="cust_name")
????private String custName;
????@Column(name="cust_phone")
????private String custPhone;
? ??
? ? getter/setter...注解說(shuō)明:
@Entity:聲明此類為實(shí)體類。
@Table(name="數(shù)據(jù)庫(kù)表名"):實(shí)體類和表的映射地址。
@Id:聲明當(dāng)前屬性為主鍵。
@GeneratedValue(strategy=GenerationType.*):配置主鍵的生成策略
- TABLE:使用一個(gè)特定的數(shù)據(jù)庫(kù)表格來(lái)保存主鍵
- SEQUENCE:根據(jù)底層數(shù)據(jù)庫(kù)的序列來(lái)生成主鍵,條件是數(shù)據(jù)庫(kù)支持序列
- IDENTITY:主鍵由數(shù)據(jù)庫(kù)自動(dòng)生成(主要是自動(dòng)增長(zhǎng)型)
- AUTO:主鍵由程序控制。
@Column
- 作用:指定實(shí)體類屬性和數(shù)據(jù)庫(kù)表之間的對(duì)應(yīng)關(guān)系
- 屬性:
- name:指定數(shù)據(jù)庫(kù)表的列名稱。
- unique:是否唯一
- nullable:是否可以為空
- inserttable:是否可以插入
- updateable:是否可以更新
- columnDefinition: 定義建表時(shí)創(chuàng)建此列的DDL
- secondaryTable: 從表名。如果此列不建在主表上(默認(rèn)建在主表),該屬性定義該列所在從表的名字搭建開(kāi)發(fā)環(huán)境[重點(diǎn)]
step3:編寫(xiě)配置文件屬性
yml文件:
數(shù)據(jù)庫(kù)配置:****** jpa: ? ? hibernate: ? ? ? ddl-auto: update ? ? show-sql: true
屬性說(shuō)明:
hibernate.ddl-auto:
- create:?jiǎn)?dòng)時(shí)刪數(shù)據(jù)庫(kù)中的表,然后創(chuàng)建,退出時(shí)不刪除數(shù)據(jù)表。
- create-drop:?jiǎn)?dòng)時(shí)刪數(shù)據(jù)庫(kù)中的表,然后創(chuàng)建,退出時(shí)刪除數(shù)據(jù)表 如果表不存在報(bào)錯(cuò)。
- update:如果啟動(dòng)時(shí)表格式不一致則更新表,原有數(shù)據(jù)保留。
- validate:項(xiàng)目啟動(dòng)表結(jié)構(gòu)進(jìn)行校驗(yàn) 如果不一致則報(bào)錯(cuò)。
show-sql:調(diào)用函數(shù)時(shí),是否在控制臺(tái)打印sql語(yǔ)句。
step3編寫(xiě)符合Spring Data JPA規(guī)范的Dao層接口
Spring Data JPA是spring提供的一款對(duì)于數(shù)據(jù)訪問(wèn)層(Dao層)的框架,使用Spring Data JPA,只需要按照框架的規(guī)范提供dao接口,不需要實(shí)現(xiàn)類就可以完成數(shù)據(jù)庫(kù)的增刪改查、分頁(yè)查詢等方法的定義,極大的簡(jiǎn)化了我們的開(kāi)發(fā)過(guò)程。
在Spring Data JPA中,對(duì)于定義符合規(guī)范的Dao層接口,我們只需要遵循以下幾點(diǎn)就可以了:
創(chuàng)建一個(gè)Dao層接口,并實(shí)現(xiàn)JpaRepository和JpaSpecificationExecutor
提供相應(yīng)的泛型
public interface CustomerDao extends JpaRepository<Customer, Long>, JpaSpecificationExecutor<Customer> {
}說(shuō)明:
- JpaRepository:該接口為我們jpa提供了基本的簡(jiǎn)單的增刪改查方法。
- JpaSpecificationExecutor:提供數(shù)據(jù)的復(fù)雜操作。
OK!現(xiàn)在我們就能對(duì)實(shí)體進(jìn)行的簡(jiǎn)單操作啦~
step4:編寫(xiě)測(cè)試用例
public class DataTest {
????@Autowired
????private CustomerDao customerDao;
????/**
?????* 保存一個(gè)客戶數(shù)據(jù)
? ? ?* 調(diào)用save(obj)方法
?????*/
????@Test
????public void testSave() {
????????Customer c = new Customer();
????????c.setCustName("掘金");
????????customerDao.save(c);
????}執(zhí)行測(cè)試用例查看數(shù)據(jù)庫(kù)顯示數(shù)據(jù)添加成功!
到此這篇關(guān)于搭建簡(jiǎn)單的Spring-Data JPA項(xiàng)目的文章就介紹到這了,更多相關(guān)Spring-Data JPA搭建項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
自己編寫(xiě)IOC控制反轉(zhuǎn)及AOP面向切面
本文展示通過(guò)一個(gè)案例來(lái)自己手寫(xiě)IOC和AOP代碼,通過(guò)銀行轉(zhuǎn)賬案例詳細(xì)的代碼編寫(xiě)和文檔解釋來(lái)說(shuō)明IOC和AOP的思想,會(huì)分享存在的問(wèn)題和解決問(wèn)題的思路2021-06-06
Java把數(shù)字格式化為貨幣字符串實(shí)例代碼
這篇文章主要介紹了Java把數(shù)字格式化為貨幣字符串實(shí)例代碼,需要的朋友可以參考下2014-02-02
解析Mybatis SqlSessionFactory初始化原理
本文主要介紹了Mybatis SqlSessionFactory初始化原理,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過(guò)程解析
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

