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

Hibernate 注解配置

核心技能部分​ 1.1 创建SessionFactory 基于xml配置的配置信息位于实体类映射文件中,如Category.hbm.xml;基于注解配置配置信息位于类源代码中,如Category.class...另外,我们还需要用到@JoinColumn注解,它有一个name属性,用于指定数据库表中的外键列名称。...1.1.2 单向多对一关联 @ManyToOne注解用来配置多对一关系,该注解除了共有属性外还拥有一个叫做optional的配置选项,设置为true时,即使外键为空仍可以向表中添加数据。...它仅拥有board_id和person_id两个列,且分别是版块表和用户表的外键。...在实体类中配置多对多关联关系需要使用@ManyToMany注解,该注解的配置选项和 @OneToMany一模一样。同时通过 @JoinTable 注解描述中间关联表和通过中间表关联到两方的外键。

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

    Spring全家桶之SpringData——Spring Data JPA

    导入jar 两个核心jar 加上3个sl4j的jar 2. 在配置文件中开启Spring Data JPA的命名空间以及它的约束 3. 在配置文件中添加Spring Data JPA的配置 4....提供了一套基于JPA标准操作数据库的简化方案。底层默认的是依赖Hibernate JPA 来实现的。...如Hibernate与Hibernate Jpa 逆向工程: 通过数据库表自动创建对应的实体类以及查询方法 逆向工程的使用 测试类中 注解名称 作用 @RunWith(SpringJUnit4ClassRunner.class...本项目是基于 Hibernate Jpa项目上构建 ,Hibernate Jpa查看上篇博文 ?...”),inverseJoinColumns=@JoinColumn(name=“menu_id”)) joinColumns:建立当前表在中间表中的外键字段 inverseJoinColumns :建立另一张表在中间表中的外键字段

    3.8K10

    jpaspringdata(1)jpa

    hibernate作为orm  待续重写整个部分 3.jpa的配置简要说明 新建–jpa项目(自动生成jpa项目的xml文件) persistence.xml,文件的名称是固定的,然后是根据name=”...@GeneratedValue/*获取主键的方式,主键id的描述,在hibernate中,以及mybatis中的resultmap的都是描述为id标签, 这里获取主键的方式有IDENTITY:采用数据库...joinColumns={@JoinColumn(name="ITEM_ID", referencedColumnName="ID")},//joinColumns 映射当前类所在的表在中间表中的外键...,name 指定外键列的列名, referencedColumnName 指定外键列关联当前表的哪一列,inverseJoinColumns={@JoinColumn(name="CATEGORY_ID...", referencedColumnName="ID")})//inverseJoinColumns 映射关联的类所在中间表的外键 @ManyToMany public Set<Category

    2K20

    Spring 全家桶之 Spring Data JPA(四)

    //声明主键 @GeneratedValue(strategy = GenerationType.IDENTITY)//声明主键生成策略 @Column(name = "cust_id"...(中间表):@JoinColumn,name外键字段名称,referenceColumnName参照主表的主键字段名称 * 在客户实体类上(一对多中一的这边)添加了外键配置,对于客户而言,具备了维护外键的作用...sql语句 查看数据库表,外键已更新,关联关系已经建立 在One2ManyTest中在增加testSave1() // 只配置联系人到客户的关系 @Test @Transactional @Rollback...insert的时候就已经建立 查看数据库表,外键存在,关联关系建立成功 在One2ManyTest中增加testSave2(),在linkMan中set customer,在customer中set...()通过在customer中set linkMan,同时在linkMan中set customer也可以建立两者之间的关系,后台执行了4条SQL语句,因此可以看出在一对多关系中一的一边建立外键维护关系可以执行较少的

    1.6K20

    使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置

    新建一个数据库springdemo,在数据库中,有两张表:     (1)用户表user:用户登录信息,主键id设为自增;     (2)博文表blog:储存用户发表的博文,主键id设为自增,其中有一个外键...使用MySQL Workbench添加外键流程: ? ?...注意:在添加外键时,应该根据需求设置,例如右边红框中的Foreign Key Options,默认在Delete时是NO ACTION,说明在删除一个用户时,如果数据库中存在该用户的文章,那么就无法删除该用户...选中blog表然后点击“+”号按钮,添加外键关系(7)。 ? ?     点击OK后,在Database Schema Mapping中可以发现多出了两个关系,如图所示: ?    ...再点击OK,稍后,打开model包,可以看到生成了两个Java Bean,在SpringMVC中称为两个实体,它们对应了数据库的两张表: ?

    1.7K10

    使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置 顶

    新建一个数据库springdemo,在数据库中,有两张表:     (1)用户表user:用户登录信息,主键id设为自增;     (2)博文表blog:储存用户发表的博文,主键id设为自增,其中有一个外键...使用MySQL Workbench添加外键流程: ? ?...注意:在添加外键时,应该根据需求设置,例如右边红框中的Foreign Key Options,默认在Delete时是NO ACTION,说明在删除一个用户时,如果数据库中存在该用户的文章,那么就无法删除该用户...选中blog表然后点击“+”号按钮,添加外键关系(7)。 ? ?     点击OK后,在Database Schema Mapping中可以发现多出了两个关系,如图所示: ?    ...再点击OK,稍后,打开model包,可以看到生成了两个Java Bean,在SpringMVC中称为两个实体,它们对应了数据库的两张表: ?

    83720

    JPA作持久层操作

    在本表中创建detail_id,并外键连接AccountDetail表的主键id @OneToOne //声明为一对一关系 AccountDetail detail;...ID为:"+account.getId()+",外键ID为:"+account.getDetail().getId()); } 可以看到日志结果:结束后会发现数据库中两张表都同时存在数据。...插入时,自动生成的主键ID为:6,外键ID为:3 一对多 接着我们来看一对多关联,比如每个用户的成绩信息: Account类: @JoinColumn(name = "uid") //注意这里的name...inverseJoinColumns = @JoinColumn(name = "tid") //教师实体主键在关联表中的字段名称,并在当前表中创建tid字段作为外键连接关联表的tid...) List teacher; 接着,JPA会自动创建一张中间表,并自动设置外键,我们就可以将多对多关联信息编写在其中了。

    1.2K10

    高级框架-springDate-JPA 第二天【悟空教程】

    JPA 第二天 第1章 JPA 中的主键生成策略 通过annotation(注解)来映射实体类和数据库表的对应关系,基于annotation的主键标识为@Id注解, 其生成规则由@GeneratedValue...其中:JPA 提供的四种标准用法为 TABLE,SEQUENCE,IDENTITY,AUTO。由于我们使用的是 hibernate 实现,它也支持 hibernate 中定义的生成规则。...@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long custId; 1.2 使用 hibernate 中的主键生成规则...1.2.1 hibernate 中提供的主键生成规则 在讲解 Hibernate 的主键生成策略之前,先来了解两个概念,即自然主键和代理主键,具体如下: 自然主键: 把具有业务含义的字段作为主键...在数据库中建立一对多的关系,需要使用数据库的外键约束。 什么是外键? 指的是从表中有一列,取值参照主表的主键,这一列就是外键。 一对多数据库关系的建立,如下图所示 ?

    2.5K10

    一篇 JPA 总结

    是实现:Hibernate 除了是一种 ORM 框架之外,他也是一种 JPA 实现 HelloWorld 步骤 创建 presitence.xml,在这个文件中配置持久化单元 指定跟哪个数据库进行交互...默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment IDENTITY:采用数据库 ID自增长的方式来自增主键字段...persistence():类似于 Hibernate 中 Session 的 save 方法,但此方法所要存取的对象若有 id,那么会抛异常 ? ?...remove():类似于 Hibernate 中 Session 的 delete 方法,但此方法只可删除持久化对象,而 hibernate 的方法可以删除游离对象(不在缓存中,但在数据库中可能有对象,...关联关系映射(使用 IDEA 可以使用实体生成表,也可以使用对应的额表逆向生成实体类) 单向多对一(orders - customer) 表结构(oreders 表中有 customer 表的外键映射

    5.6K20

    JPA实体类中的注解

    ,如果是逆向生成表的话就会以简单类名作为表名   如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表; @Id   标注于属性上,通常是在get...用于表示该属性作为ID主键 @GeneratedValue   主键生成策略,@GeneratedValue(strategy=GenerationType.AUTO)表示主键自增长由实现jpa的框架来控制...,例如我们用hibernate实现的就是有hibernate来控制   GenerationType总共有四个:   AUTO:   TABLE:由一个表来维护主键,这个表记录上一次生成的主键,然后+1...joinColum指关系维护端本身的外键 总结 关系被维护端用mapperBy来定义关系 关系维护端用joinColum来指定外键名称,维护外键或者是@JoinTable通过中间表维护关系 *ToOne...@Id @Id设置对象表示符,标识的实体类的属性映射对应表中的主键 @GeneratedValue 设置标识符的生成策略,常与@Id一起使用  参数:strategy指定具体的生成策略  方式一:@

    3.9K70

    补习系列(19)-springboot JPA + PostGreSQL

    , create-drop, validate, update)spring.jpa.hibernate.ddl-auto = update 其中,spring.jpa.hibernate.ddl-auto...这里为了演示多对一的关联,我们还会定义一个Author(作者信息)实体,书籍和实体通过一个外键(author_id)关联。...@GeneratedValue 用于指定ID主键的生成方式,GenerationType.IDENTITY 指采用数据库原生的自增方式, 对应到 PostGreSQL则会自动采用 BigSerial 做自增类型...ManyToOne 描述了一个多对一的关系,这里声明了其关联的"作者“实体,LAZY 方式指的是当执行属性访问时才真正去数据库查询数据; @JoinColumn 在这里配合使用,用于指定其关联的一个外键...@Temporal 则用于声明日期类型对应的格式,如TIMESTAMP会对应 yyyy-MM-dd HH:mm:ss的格式,而这个也会被体现到DDL中。

    2.2K70

    SpringBoot整合JPA+SQLite

    本篇博客将详细介绍如何在Spring Boot项目中整合JPA与SQLite,搭建高效的数据持久化层。...JPA配置:设置JPA相关参数,如方言(SQLite有对应方言适配)、自动建表策略等,如下: spring.jpa.database-platform=org.hibernate.dialect.SQLiteDialect...spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update表示根据实体类结构变化自动更新数据库表结构...(需引入Lombok依赖) } @Entity注解表明该类是JPA实体,对应数据库表,@Id指定主键,@GeneratedValue配置主键生成策略,这里基于自增长方式,类属性与表字段按默认驼峰命名规则映射...会在运行时自动生成实现类,提供如save(保存)、findById(根据主键查询)、findAll(查询所有)等常用方法。

    18310
    领券