Spring.jpa使用Hibernate的配置和常用注解

文章内容来自于:
http://blog.didispace.com/springbootdata2/,作者:程序猿DD
https://www.cnblogs.com/hoojjack/p/6568920.html,作者:hoojjack
文章主要用于自己学习SpringBoot,方便以后的查询


1.关于spring.jpa.properties.hibernate.hbm2ddl.auto的配置

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop

该配置的的主要作用是:自动创建、更新、验证数据库表结构。该参数的几种配置如下:

  • create:每次加载Hibernate时都会删除上一次生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
  • create-drop:每次加载Hibernate时根据model类生成表,但是SessionFactory一关闭,表就会自动删除
  • update:最常用的属性,第一次加载Hibernate时根据model类会自动建立起表的架构(前提是先建立好数据库),以后加载Hibernate时根据model类自动更新表结构,即使表结构改变了,但表中的行仍然存在不会删除以前的行。要注意的是,当部署到服务器后,表结构不会马上建立起来的, 是要等应用第一次运行起来后才会。
  • validate:每次加载Hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

2.Hibernate的Annotation注解

一、声明实体

@Entity

对实体注释。任何Hibernate映射对象都要有这个注释

@Table

声明此对象映射到数据库的数据表,通过他可以为实体指定表(Table),目录(Catalog)和Schema的名字。该注释不是必须的,如果没有则系统使用默认值(实体的短类名)

@Version

该注释可用于在实体Bean中添加乐观锁支持。

二、声明主键

@Id

声明此属性为主键。该属性值可以通过自身创建,但是Hibernate推荐通过Hibernate生成。

@GeneratedValue

指定主键的生成策略。有如下四个值

  • TABLE:使用表保存id值
  • IDENTITY:identity column
  • SEQUENCR:sequence排序
  • AUTO:根据数据库的不同,使用上面三种

三、声明普通属性

@Column

声明该属性与数据库字段的映射关系

@Column(nam=”category_name” length=20)
Public void getCategoryName(){
      Return this.categoryName;
} 

注意:

  • 1、当POJO有属性不需要映射的时候一定要用@Transitent修饰,该注释表示此属性与表没有映射关系,只是一个暂时的 属性。
  • 2、@Lob注释表示该属性持久化为Blob或者Clob类型,具体取决于属性的类型

四、声明关联关系

原文章:https://www.cnblogs.com/hoojjack/p/6568920.html


你可能感兴趣的:(Spring,Boot学习)