首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

springboot整合H2(内置一个月对JPA的学习)

什么是JPA JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。...总的来说,JPA包括以下3方面的技术: ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; API 用来操作实体对象...=spring-boot-h2 #************H2 Begin**************** #创建表的MySql语句位置 spring.datasource.schema=classpath....Driver 有两个配置是用来初始化我们的数据库的 #创建表的MySql语句位置 spring.datasource.schema=classpath:schema.sql #插入数据的MySql语句的位置...DETACH 如果你要删除一个实体,但是它有无法删除,你就需要这个级联权限了。它会撤销所有相关的关联。

3.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

玩转 Spring Boot 集成篇(MyBatis、JPA、事务支持)

不过那多 Mpper 文件、那么多实体、那么多 Service 等要编写代码,也挺繁琐,其实这些都是可以自动生成的,不过不是本文的分享重点(捂嘴笑),接下来谈谈 Spring Boot 事务的支持。...接下来基于上面第 1 章节的代码稍作改动,便可验证 Spring Boot 事务的支持。 思考:如果保存商品出现了异常,看看保存的商品能否添加成功?...Spring Boot 集成 JPA JPA 是 Java Persistence API 的简称,中文名 Java 持久层 API,是 JDK 5.0 注解或 XML 描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中...至此,Spring BootJPA 集成完毕。...例行回顾 本文是 Spring Boot 项目集成持久层组件篇的讲解,主要分享了如下部分: Spring Boot 项目如何集成 MyBatis? Spring Boot 项目如何集成 JPA

1.7K30

springBoot注解与分析

@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的。一对多:另一个表指向本表的。...@PrePersist 和 @PostPersist事件在实体对象插入到数据库的过程中发生; @PrePersist 事件在调用 EntityManager.persist()方法后立刻发生,级联保存也会发生此事件...数据库插入 @PrePersist和@PostPersist事件在实体对象插入到数据库的过程中发生: @PrePersist事件在调用persist()方法后立刻发生,此时的数据还没有真正插入进数据库...@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的。一对多:另一个表指向本表的。...默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment。

1.1K10

SpringBoot系列之数据库初始化-jpa配置方式

上一篇博文介绍如何使用spring.datasource来实现项目启动之后的数据库初始化,本文作为数据库初始化的第二篇,将主要介绍一下,如何使用spring.jpa的配置方式来实现相同的效果 <!...同样需要将配置设置为 always 使用jpa的配置方式,将ddl-auto设置为create或者create-drop,会自动搜索@Entity实体对象,并创建为对应的表 II....验证demo 接下来上面的工作准备完毕之后,我们先创建一个实体对象 @Data @DynamicUpdate @DynamicInsert @Entity @Table(name = "user3")...(注意如上面data.sql中的数据插入依然会重复执行,会导致主键插入冲突) 本文中需要重点关注的几个配置: spring.datasource.initialization-mode: always...同样需要设置为always spring.jpa.generate-ddl: true 会根据@Entity注解的实体类生成对应数据表 spring.jpa.hibernate.ddl-auto: create

1K10

JPA作持久层操作

>spring-boot-starter-data-jpa 设置配置yaml spring: jpa: #开启SQL语句执行日志信息...,可以设置懒加载,这样只有在需要才会数据库获取: 设置懒加载后,使用懒加载设置过的属性的方法需要在事务环境下获取(因为repository方法调用完后Session会立即关闭 @JoinColumn...,自动生成的主键ID为:"+account.getId()+",ID为:"+account.getDetail().getId()); } 可以看到日志结果:结束后会发现数据库中两张表都同时存在数据...插入时,自动生成的主键ID为:6,ID为:3 一对多 接着我们来看一对多关联,比如每个用户的成绩信息: Account类: @JoinColumn(name = "uid") //注意这里的name...) List teacher; 接着,JPA自动创建一张中间表,并自动设置,我们就可以将多对多关联信息编写在其中了。

1.2K10

【极光系列】springBoot集成Hibernate

-- 集成spring data jpa --> org.springframework.boot...spring-boot-starter-data-jpa <dependency...#update:最常用的属性,第一次加载hibernate根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...* @Column 注解用于指定实体类属性映射到的数据库列名* @Transient 映射数据表和对象关系时候就不会报在表中不存在该字段* @CreationTimestamp 插入数据自动更新时间...* @Column 注解用于指定实体类属性映射到的数据库列名 * @Transient 映射数据表和对象关系时候就不会报在表中不存在该字段 * @CreationTimestamp 插入数据自动更新时间

13210

Spring 全家桶之 Spring Data JPA(五)

,用Set表示 在角色集合上增加@ManyToMany注解,表明多对多的关系 @JoinTable表示配置中间表,name表示中间表的名称,joinColumns配置的是当前对象在中间表中的...,name值得值中间表的主键,referencedColumnName当前类对应表的主键,inverseJoinColumns:对方对象在中间表的 ```java @Entity @Table(name...@JoinTable:配置中间表,name为中间表的名称, joinColumns配置的是当前对象在中间表中的,name值得值中间表的主键,referencedColumnName当前类对应表的主键...inverseJoinColumns:对方对象在中间表的 */ @ManyToMany(targetEntity = Role.class) @JoinTable(name = "sys_user_role...user插入的数据,所以出现了主键冲突的报错 因此需要user和role一方放弃维护权,修改Role实体类中关联关系,mappedBy是指role在对方表的属性名称 //@ManyToMany(targetEntity

2.1K20

SpringBoot重点详解–使用JPA操作数据库

JPA使用XML文件或注解(JDK 5.0或更高版本)来描述对象-关联表的映射关系,能够将运行期的实体对象持久化到数据库,它为Java开发人员提供了一种ORM工具来管理Java应用中的关系数据。...关闭自动删除生成的数据库表结构; update 只在第一次加载hibernate自动生成数据库表结构,以后再次加载hibernate根据model类自动更新表结构; validate 每次加载hibernate...,验证数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。...none 关闭自动更新 创建POJO实体 首先创建一些普通对象,用来与数据库的表建立映射关系,在此我们只定义了员工和部门两个实体来进行示例。...Data JPA接口提供的基础功能Spring Data JPA还允许开发者自定义查询方法,对于符合以下命名规则的方法,Spring Data JPA能够根据其方法名为其自动生成SQL,除了使用示例中的

2.6K20

jdbc java_Springdata

--spring-data-jpa--> org.springframework.boot spring-boot-starter-data-jpa...创建数据库和表 复习一下oracle建数据库和表的操作吧 1.创建数据库 Jpa支持mySQL和Oracle数据库,这里使用Oracle做例子 mysql数据库也就实体类的主键声明和使用的桥接器不同,之后的章节会做具体解释...unique:是否唯一nullable:是否可以为空nserttable:是否可以插入updateable:是否可以更新columnDefinition: 定义建表创建此列的DDL @CreatedBy...自动插入创建人 @CreatedDate 自动插入创建时间 @LastModifiedBy 自动修改更新人 @LastModifiedDate 自动修改更细时间 @Version 自动更新版本号...可以看到,这个接口继承了JpaRepository,spring-data-jpa只需要这个信息,就可以帮你完成常用的操作:增删查改。

1K10

Spirng Boot整合Mybatis实现增删改查案例-注解版

前面的文章介绍了Spring Boot整合JPA实现数据库的访问功能,这里再次介绍Spring Boot整合Mybatis实现数据的增删改查功能。...观察上面的依赖,我还加入了lombok插件依赖,这个已经被集成到了Spring Boot中,它可以动态地生成实体类的getter和setter等方法,使得实体类更加简洁,继续往下看,你会发现我的实体类没有...JPA仅仅是为了启动项目的时候会自动根据实体类到数据库中创建相应的表,没有其他作用,实际项目中应该将其去掉。...,也就是说直接插入对象到数据库,要保持字段和SQL语句内的预留字段一致 * * @param product 商品对象 * @return 插入成功返回1,失败返回0...请看另一篇:Spring Boot整合JPA实现数据的增删改查。

65120

Spring Boot 与 Kotlin使用Spring-data-jpa简化数据访问层

:spring-boot-starter-web:$spring_boot_version" compile "org.springframework.boot:spring-boot-starter-data-jpa...:$spring_boot_version" compile "mysql:mysql-connector-java:$mysql_version" testCompile "org.springframework.boot...create-drop:每次加载hibernate根据model类生成表,但是sessionFactory一关闭,表就自动删除。...update:最常用的属性,第一次加载hibernate根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...validate:每次加载hibernate,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

3.5K40

Spring Data JDBC参考文档

Java 世界中关系数据库的主要持久化 API 肯定是 JPA,它有自己的 Spring Data 模块。为什么还有一个? JPA 做了很多事情来帮助开发人员。除其他,它跟踪对实体的更改。...Spring Data JDBC 假定只有聚合具有指向存储聚合的非根实体的表的,并且没有其他实体指向非根实体。...使用 Spring Boot 可以进一步简化此配置。DataSource一旦启动器 spring-boot-starter-data-jdbc包含在依赖项中,使用 Spring Boot就足够了。...对象创建 Spring Data 会自动尝试检测要用于具体化该类型对象的持久实体的构造函数。解析算法的工作原理如下: 如果只有一个构造函数,则使用它。...该类公开了一个withId(…)用于设置标识符的方法,例如,当一个实例插入到数据存储中并生成一个标识符。调用withId(…)创建一个新Person对象

1.4K30

SpringBoot中@Transaction在不同MySQL引擎下的差异性

修改JPA自动创建表的引擎 测试工程中,使用的是JPA自动创建数据表的方式,默认情况下,创建出来数据表使用的是MyISAM引擎,因此如果需要使用事务,可以手动配置下,指定使用InnoDB引擎进行创建数据表...完整的JPA相关的配置参数如下: # JPA Configure # database type spring.jpa.database=mysql # whether to show the sql...in the log or console spring.jpa.show-sql=true spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl...它们不是事务安全的,而且也不支持。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。 InnoDB:这种类型是事务安全的。...它与BDB类型具有相同的特性,它们还支持。InnoDB表格速度很快。具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。

1K20

SpringBoot注解最全详解(整合超详细版本)

springIoC容器提供的功能 一、注解详解(配备了完善的释义) 可采用ctrl+F 来进行搜索哦~~~~ @SpringBootApplication:申明让spring boot自动给程序进行必要的配置...推荐:Java面试练题宝典 三、JPA注解 @Entity:@Table(name=”“):表明这是一个实体类。...@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的。一对多:另一个表指向本表的。...,例如主键和等,这些字段通常是自动生成的 columnDefinition属性:columnDefinition属性表示创建表,该字段创建的SQL语句,一般用于通过Entity生成表定义使用,...2)数据库插入 @PrePersist和@PostPersist事件在实体对象插入到数据库的过程中发生: @PrePersist事件在调用persist()方法后立刻发生,此时的数据还没有真正插入进数据库

60310

SpringBoot注解最全详解(整合超详细版本)

@JsonBackReference:解决嵌套链问题。 @RepositoryRestResource:配合spring-boot-starter-data-rest使用。...三、JPA注解 @Entity:@Table(name=”“):表明这是一个实体类。...@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的。一对多:另一个表指向本表的。...:一般多用于只读的属性,例如主键和等,这些字段通常是自动生成的 (7) columnDefinition属性:columnDefinition属性表示创建表,该字段创建的SQL语句,一般用于通过Entity...2)数据库插入 @PrePersist和@PostPersist事件在实体对象插入到数据库的过程中发生: @PrePersist事件在调用persist()方法后立刻发生,此时的数据还没有真正插入进数据库

4.7K10
领券