文章内容来自于:
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 columnSEQUENCR:
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