• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot集成JPA持久层框架,简化数据库操作

springboot 搞代码 4年前 (2022-01-05) 33次浏览 已收录 0个评论
文章目录[隐藏]

JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范。主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强。

与SpringBoot2.0整合 

1、核心依赖

 <!-- JPA框架 -->     org.springframework.boot     spring-boot-starter-data-jpa

2、配置文件

 spring:   application:     name: node09-boot-jpa   datasource:     url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true     username: root     password: root     driver-class-name: com.mysql.jdbc.Driver   jpa:     hibernate:       ddl-auto: update     show-sql: true

ddl-auto几种配置说明
1)create
每次加载hibernate时都删除上一次的生成的表,然后根据bean类重新来生成新表,容易导致数据丢失,(建议首次创建时使用)。
2)create-drop
每次加载hibernate时根据bean类生成表,但是sessionFactory一关闭,表就自动删除。
3)update
第一次加载hibernate时根据bean类会自动建立起表的结构,以后加载hibernate时根据bean类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。
4)validate
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

3、实体类对象

就是根据这个对象生成的表结构。

 @Table(name = "t_user") @Entity public class User {     @Id     @GeneratedValue     private Integer id;     @Column     private String name;     @Column     private Integer age;     // 省略 GET SET }

4、JPA框架的用法

定义对象的操作的接口,继承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 findByAge(Integer age);     // 多条件查询     User findByNameAndAge(String name, Integer age);     // 自定义查询     @Query("from User u where u.name=:name")     User findSql(@Param("name") String name); }

5、封装一个服务层逻辑

 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 {     @Resource     private UserRepository userRepository ;     // 保存     public void addUser (User user){         userRepository.save(user) ;     }     // 根据年龄查询     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) ;     }     // 根据ID修改     public void update (User user){         userRepository.save(user) ;     }     //根据id删除一条数据     public void deleteStudentById(Integer id){         userRepository.deleteById(id);     } }

测试代码块 

 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 {     @Resource     private UserService userService ;     @Test     public 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);     }     @Test     public void findByAge (){         Integer age = 22 ;         // User{id=3, name='知了一笑', age=22}         System.out.println(userService.findByAge(age));     }     @Test     public void findByNameAndAge (){         System.out.println(userService.findByNameAndAge("cicada",23));     }     @Test     public void findSql (){         // User{id=4, name='cicada', age=23}         System.out.println(userService.findSql("cicada"));     }     @Test     public void update (){         User user = new User() ;         // 如果这个主键不存在,会以主键自增的方式新增入库         user.setId(3);         user.setName("哈哈一笑");         user.setAge(25);         userService.update(user) ;     }     @Test     public void deleteStudentById (){         userService.deleteStudentById(5) ;     } }

源代码地址 

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
码云地址:知了一笑
https://gitee.com/cicadasmile/spring-b来源gaodaima#com搞(代@码网oot-base

以上就是SpringBoot集成JPA持久层框架,简化数据库操作的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot集成JPA持久层框架,简化数据库操作
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址