springboot simple (9) springboot jpa(Hibernate)

1 JPA Hibernate

Hibernate是一个全自动的ORM框架(Object Relational Mapping ,对象关系映射)。
Spring Data JPA:
是Spring Data的子模块,JPA默认使用hibernate作为ORM实现。

2 springboot集成Hibernate

第1步:引入pom文件:

		<!-- MySQL 连接驱动依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql-connector}</version>
		</dependency>
		<!--jpa相关依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

第2步:定义配置文件:

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "org.feidao.chapter42.repository")
@EntityScan(basePackages = "org.feidao.chapter42.entity")
public class JpaConfiguration {
    @Bean
    PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}

第3步:定义entity实体bean;

@Getter@Setter
@Entity
@Table(name="tb_heroic")
public class Heroic{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;
    @Column(name="name")
    public String name = "";
    @Column(name="remarks")
    public String remarks = "";
}

第4步:定义dao的interface;

 @Repository
public interface HeroicRepository  extends JpaRepository <Heroic, Long>{
}

然后就可以直接调用HeroicRepository 的接口了。

3 测试验证

3.1 新增英雄(heroic)验证

在这里插入图片描述
可以数据库中多了一条记录:在这里插入图片描述

3.2 查询英雄(heroic)验证

在这里插入图片描述

3.3 修改英雄(heroic)验证

在这里插入图片描述
可以数据库记录已经修改
在这里插入图片描述

3.4 删除英雄(heroic)验证

在这里插入图片描述
可见数据库中的记录已经清空了。
在这里插入图片描述

4 问题汇总

报错1:org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’
解决: import org.springframework.data.annotation.Id; 改为improt javax.persistence.Id;

报错2::Caused by: java.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997)
解决:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.39</version>
</dependency>

修改为:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.30</version>
</dependency>

报错3:
com.mysql.cj.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.
at sun.reflect.GeneratedConstructorAccessor50.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_25]
at java.lang.reflect.Constructor.newInstance(Constructor.java:408) ~[na:1.8.0_25]
解决:
配置文件增加:

spring.datasource.hikari.max-lifetime=30000

代码详见:
https://gitee.com/linghufeixia/springboot-simple
chapter4-2


教程列表
springboot simple(0) springboot简介

springboot simple(1) springboot Helloworld

springboot simple(2) springboot Starter

springboot simple(3 )springboot Web开发

springboot simple(4)springboot 数据持久化

springboot simple (5) springboot Nosql

springboot simple (6) springboot mqtt

springboot simple (7) springboot thrift

springboot simple (8) springboot kafka

springboot simple (9) springboot jpa(Hibernate)

springboot simple (10) springboot protobuf

springboot simple (11) springboot protostuff

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值