javascript
SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
一、JAP框架簡介
JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化規(guī)范。主要是為了簡化持久層開發(fā)以及整合ORM技術(shù),結(jié)束Hibernate、TopLink、JDO等ORM框架各自為營的局面。JPA是在吸收現(xiàn)有ORM框架的基礎(chǔ)上發(fā)展而來,易于使用,伸縮性強(qiáng)。
二、與SpringBoot2.0整合
1、核心依賴
<!-- JPA框架 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>2、配置文件
spring:application:name: node09-boot-jpadatasource:url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=trueusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverjpa:hibernate:ddl-auto: updateshow-sql: trueddl-auto幾種配置說明
1)create
每次加載hibernate時(shí)都刪除上一次的生成的表,然后根據(jù)bean類重新來生成新表,容易導(dǎo)致數(shù)據(jù)丟失,(建議首次創(chuàng)建時(shí)使用)。
2)create-drop
每次加載hibernate時(shí)根據(jù)bean類生成表,但是sessionFactory一關(guān)閉,表就自動(dòng)刪除。
3)update
第一次加載hibernate時(shí)根據(jù)bean類會(huì)自動(dòng)建立起表的結(jié)構(gòu),以后加載hibernate時(shí)根據(jù)bean類自動(dòng)更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行。
4)validate
每次加載hibernate時(shí),驗(yàn)證創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫中的表進(jìn)行比較,不會(huì)創(chuàng)建新表,但是會(huì)插入新值。
3、實(shí)體類對(duì)象
就是根據(jù)這個(gè)對(duì)象生成的表結(jié)構(gòu)。
@Table(name = "t_user") @Entity public class User {@Id@GeneratedValueprivate Integer id;@Columnprivate String name;@Columnprivate Integer age;// 省略 GET SET }4、JPA框架的用法
定義對(duì)象的操作的接口,繼承JpaRepository核心接口。
import com.boot.jpa.entity.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends JpaRepository<User,Integer> {// 但條件查詢User findByAge(Integer age);// 多條件查詢User findByNameAndAge(String name, Integer age);// 自定義查詢@Query("from User u where u.name=:name")User findSql(@Param("name") String name); }5、封裝一個(gè)服務(wù)層邏輯
import com.boot.jpa.entity.User; import com.boot.jpa.repository.UserRepository; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class UserService {@Resourceprivate UserRepository userRepository ;// 保存public void addUser (User user){userRepository.save(user) ;}// 根據(jù)年齡查詢public User findByAge (Integer age){return userRepository.findByAge(age) ;}// 多條件查詢public User findByNameAndAge (String name, Integer age){return userRepository.findByNameAndAge(name,age) ;}// 自定義SQL查詢public User findSql (String name){return userRepository.findSql(name) ;}// 根據(jù)ID修改public void update (User user){userRepository.save(user) ;}//根據(jù)id刪除一條數(shù)據(jù)public void deleteStudentById(Integer id){userRepository.deleteById(id);} }三、測(cè)試代碼塊
import com.boot.jpa.JpaApplication; import com.boot.jpa.entity.User; import com.boot.jpa.service.UserService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = JpaApplication.class) public class UserJpaTest {@Resourceprivate UserService userService ;@Testpublic void addUser (){User user = new User() ;user.setName("知了一笑");user.setAge(22);userService.addUser(user);User user1 = new User() ;user1.setName("cicada");user1.setAge(23);userService.addUser(user1);}@Testpublic void findByAge (){Integer age = 22 ;// User{id=3, name='知了一笑', age=22}System.out.println(userService.findByAge(age));}@Testpublic void findByNameAndAge (){System.out.println(userService.findByNameAndAge("cicada",23));}@Testpublic void findSql (){// User{id=4, name='cicada', age=23}System.out.println(userService.findSql("cicada"));}@Testpublic void update (){User user = new User() ;// 如果這個(gè)主鍵不存在,會(huì)以主鍵自增的方式新增入庫user.setId(3);user.setName("哈哈一笑");user.setAge(25);userService.update(user) ;}@Testpublic void deleteStudentById (){userService.deleteStudentById(5) ;} }四、源代碼地址
GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 碼云地址:知了一笑 https://gitee.com/cicadasmile/spring-boot-base
總結(jié)
以上是生活随笔為你收集整理的SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让Visual Studio 2005
- 下一篇: SpringBoot2.0 基础案例(1