Spring Boot(17)——使用Spring Data JPA
使用Spring Data JPA
使用Spring Data JPA需要在pom.xml中添加spring-boot-starter-data-jpa
依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
之后就可以在应用中定义Entity了,并使用javax.persistence
相关注解了。比如下面就定义了一个简单的User实体。
@Entity @Table(name="tb_user") @Data public class User { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private String name; private String username; }
之后可以定义自己的JpaRepository。
public interface UserJpaRepository extends JpaRepository<User, Long> { List<User> findByName(String name); }
如果你的目录结构是按照Spring Boot建议的目录结构,上面定义的Repository将自动被Spring Boot扫描到,并被注册为一个Spring bean。Spring Boot默认会扫描标注了@SpringBootApplication
注解的Class所在的package下面的所有的package。如果需要扫描其它目录下的Repository,则可以通过@EnableJpaRepositories("com.xxx.package")
来指定。
之后就可以在Service中注入定义好的Repository进行相应的增删改查了,比如下面这样:
@Service public class UserService { @Autowired private UserJpaRepository userRepository; public void save(User user) { this.userRepository.save(user); } public void save(List<User> users) { this.userRepository.saveAll(users); } public List<User> findByName(String name) { return this.userRepository.findByName(name); } public Optional<User> findById(Long id) { return this.userRepository.findById(id); } }
添加了spring-boot-starter-data-jpa
依赖后,默认会使用JPA的Hibernate实现。org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
将负责JPA的自动配置,其只有在bean容器中只定义了一个DataSource时才会进行自动配置。可以通过spring.jpa
前缀的配置属性配置Hibernate JPA的相关信息,对应的配置属性将由org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
负责接收。可以通过spring.jpa.show-sql
指定是否需要打印SQL语句,可以通过spring.jpa.hibernate.*
指定Hibernate特定的配置信息。比如通过spring.jpa.hibernate.ddl-auto
指定是否需要基于实体配置自动应用对应的DDL语句到数据库,它相当于使用Hibernate时的hibernate.hbm2ddl.auto
。
spring.jpa.database=mysql spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update
Spring Boot会自动注册org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor
,以便可以在Web应用中使用懒加载。如果不需要自动注册OpenEntityManagerInViewInterceptor
,则可以配置spring.jpa.open-in-view=false
。关于JPA可以配置的更多信息请参考org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
的API文档。
Spring Boot默认会自动扫描Jpa Repository,如果不希望自动扫描Repository,可以配置spring.data.jpa.repositories.enabled=false
。
本文主要介绍在Spring Boot应用中如何使用Spring Data Jpa,关于Spring Data Jpa的更多应用请参考相应的文档。
(注:本文是基于Spring Boot 2.0.3所写)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Protobuf&GRPC 的基本使用
首先对比一下Java自带的序列化与Protobuf的序列化的大小差异 public static void main(String[] args) throws Exception { Person.User person = Person.User.newBuilder().setName("wangziqiang") .setAge(20) .setAddress("hebei") .setGender("男") .setTimestamp(System.currentTimeMillis()).build(); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("javaobj")); os.writeObject(person); os.close(); person.writeTo(new FileOutputStream("protoobj")); } 之后的javaobj是217字节,而proto是34字节,很明显的大小差异,下面是proto的反序列化代码 public void tes...
- 下一篇
基础语言百问-Python
基础语言百问-Python 软件界最近非常流行一句话“人生苦短,快用Python”,这就展示出了Python的特点,那就是快,当然这个快并不是指的Python运行快,毕竟是脚本语言,再怎样也快不过C语言和C++这样的底层语言,这里的快指的是使用Python进行开发会非常迅速,Python依托于开源社区,所以具有丰富和强大的库,可以借助这些库快速完成很多的功能开发。Python常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。看了吧,这就是程序员,闲着没事写代码还写这么好。由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如卡耐基梅隆大学的编程基础...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品