Hibernate annotation JPA基础配置(注解配置)

Java高手速成 | Spring、JPA与Hibernate的整合 Spring、JPA与Hibernate的整合 阅读详情

PA(Java Persistence API), 是EJB3.0的组成部分, 它显著简化了EJB持续性并提供了一个对象关系映射方法, 该方法使开发者可以采用声明方式定义如何通过一种标准的可移植方式将Java对象映射到关系数据库表.
Hibernate从3.2开始, 就开始兼容JPA, 可以通过注释的方式, 代替原有的xml映射方式.
引入Hibernate annotation后, 我们需要进行如下准备, 下载依赖的类库.
Hibernate core 3.2+
Hibernate annotation
JPA
【示例】
首先先来看一个使用Annotation后的实体配置:


Company.java
@Entity
@Table(name = "fin_company")
public class Company {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private long id;
  
   @Column(name = "c_name", length = 50, nullable = false)
   private String name;
  
   @Column(columnDefinition = "text")
   private String description;
  
   @OneToMany(mappedBy = "company", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
   private List<Employee> employees;

   public Company() {
      this.employees = new ArrayList<Employee>();
   }

   public long getId() {
      return id;
   }

   public void setId(long id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public String getDescription() {
      return description;
   }

   public void setDescription(String description) {
      this.description = description;
   }

   public List<Employee> getEmployees() {
      return employees;
   }

   public void setEmployees(List<Employee> employees) {
      this.employees = employees;
   }
}

Employee.java
@Entity
@Table(name = "fin_employee")
public class Employee {

   private long id;
   private String name;
   private Company company;

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   public long getId() {
      return id;
   }

   public void setId(long id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "company_id")
   public Company getCompany() {
      return company;
   }

   public void setCompany(Company company) {
      this.company = company;
   }
  
   @Transient
   public String getCompanyName() {
      return this.company.getName();
   }
}在上面的Java类中, 我们可以看到, 所有以@开头的标注都是JPA标注, JPA标注可以写在属性名前, 也可以写在属性的get方法前. 接下来逐一介绍这些基本标注的意思.
【注释说明】
@Entity
将普通的Java类指定为实体, 默认情况下, 所有Java类为非持续化类@Table
指定映射数据表名, 默认情况下以类名作为数据表名, 如非特殊指定, 可以省略该注释项

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
指定该实体的主键字段, 并且主键的增长方式有JAP选择最适合于基础数据库的主键生成器

@Column(name = "c_name", length = 50, nullable = false)
private String name;
name: 默认情况下, JPA会根据属性名生成数据表字段名, 使用name属性进行特殊指定
length: 字段长度
nullable: 字段是否允许为空@Column(columnDefinition = "text")
private String description;
columnDefinition: 设置为在针对列生成DDL时希望JPA使用的SQL片断.
此设置与数据库绑定, 即切换数据库的时候可能需要进行修改.

@OneToMany(mappedBy = "company", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<Employee> employees;
@OneToMany: 声明一对多关联映射, 即一个公司对应多个雇员

mappedBy: 如果关联是单项的, 该数据表维护关系字段
如双向关联(当前情况), 在一方设置mappedBy属性, 对应多方关联一方的属性名称.
让我们来看下一方的设置:
   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "company_id")
   public Company getCompany() {
      return company;
   }
在多方Employee方, 关联的属性名为company, 所以在一方设置的mappedBy值为company

@JoinColumn: 定义外键的列名
默认情况下, 无需配置, JPA默认以属性名+"_id"方式自动生成该外键列.
如需特殊指定, 设置name属性

fetch: 取得当前对象的时候, 是否加载关联对象
    LAZY: 延迟加载策略, 获取当前对象时, 不加载级联对象, 会在首次load或get级联对象的时候加载
    EAGER: 迫切获取加载策略, 获取当前对象时, 立即加载级联对象

cascade: 操作层叠关联对象策略
    ALL: 针对拥有实体执行的任何持续性操作均层叠到关联的目标
    MERGE: 如果合并了拥有实体, 则将 merge 层叠到关联的目标
    PERSIST: 如果持久保存拥有实体, 则将 persist 层叠到关联的目标
    REFRESH: 如果刷新了拥有实体, 则 refresh 为关联的层叠目标
    REMOVE: 如果删除了拥有实体,则还删除关联的目标
当前例子设置为remove, 即在删除company对象时, 会级联删除所关联的employee对象
如不进行remove设置, 在删除操作时, 系统会报外键约束异常

@Transient默认情况下, JPA 持续性提供程序假设实体的所有字段均为持久字段
即所有属性都会映射到数据表字段
如需在实体增加方法, 但又不想进行映射, 使用此注释

智能座舱架构与芯片 - (3) 硬件篇 上 在了解智能座舱的基本架构之后,我们有必要针对智能座舱域的硬件平台,软件平台,SOC等进行逐一介绍。从它们的整体结构中去认识最新的智能座舱组成部件,以及主要功能等。如上图,是中央计算-区域控制架构下的智能座舱硬件平台框架图,其中,智能座舱控制器CDC挂载在以太网交换机上,与其他车控域VDC,自驾域ADC,网联设备5G+V2X等通过以太网实现数据交互。而智能座舱域的外部硬件设备还包含有连接子系统音频子系统摄像头子系统显示子系统存储子系统功能安全子系统等。 阅读详情

相关推荐

jetson nano网络配置(有线、无线、USB)

注意:本节内容使用Jetson nano B01 版本或Jetson nano ALT 版本安装方式相同,在安装无线网卡等设备时,由于线材和设备比较脆弱,需要轻拿轻放,接口连接不上时,需要重新对准接口在进行连接,不要强行连接。Jetson nano 需要连接网络来进行更多的操作,本节就来讲解Jetson nano 的三种网络连接方法。有线:我们可以使用网线连接Jetson nano 的RJ45 接口,实现联网。

m0_73841621的博客 1万+

Hibernate对JPA的扩展

Hibernate 3.1 提供了多种附加的注解,这些注解可以与EJB3的实体混合/匹配使用。他们被设计成EJB3注解的自然扩展。 为了强化EJB3的能力,Hibernate提供了与其自身特性相吻合的特殊注解。org.hibernate.annotations 包已包含了所有的这些注解扩展。 实体:Entity@org.hibernate.annotations.Entity 追加了可能需要的额外...

老年程序员的博客 2059

第四章 自定义组件、动画

第三章 自定义组件、动画 (一)自定义View 1.1) onMeasure:对当前View的尺寸进行测量 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) widthMeasureSpec和heightMeasureSpec包含测量模式和尺寸大小 int widthMode = MeasureSpec....

Stay Hungry Stay Foolish 求知若饥 虚心若愚 8130

Java系列技术之JPA(Hibernate的注解配置)

JPA是Hibernate的规范,这里主要讲解以下个技术:1.注解配置实体类的映射关系;2.JPA的API;3.JPA的Jpql语言的使用;4.JPA的缓存配置方法;5.JPA和Spring的整合。

一文讲透 .claude/ 文件夹:Claude Code 团队配置指南和最佳实践

本文系统梳理了ClaudeCode配置框架,旨在解决实际落地中的常见困惑。文章从五层作用域体系(组织策略、命令行参数、本地覆盖、项目级、用户级)切入,详细解析了CLAUDE.md、rules、skills、agents等核心组件的定位与配合关系。重点强调了"确定性规则"与"概率性建议"的分层设计:权限控制和安全边界应通过settings.json和hooks实现,而工作约定和编码规范适合放在CLAUDE.md。文中提供了可直接套用的最小配置方案,并总结了10大常见踩坑

973

PlayReady Encrypt XAP 解密讨论

目前WP7市场上的绝大部分XAP都被MS进行了加密,经过分析,这个加密方式采用了AES方式进行了加密,本人经过对新的XAP格式(PRE)进行了分析,发现新的格式里,实际上是对之前PK(ZIP格式)的XAP进行了加密然后封装:   typedef struct {   DWORD HDR; // 0x07455250 : PRE & 0x7   DWORD a1; // always 0x1   D

u013729125的专栏 1507

Hibernate框架JPA环境注解搭建配置

JPA环境搭建: 1 16个hibernate的环境包 2 1个JPA的包在 lib文件夹下 3 2个文件 映射 数据库核心 使用直接替代xxx.hbm.xml映射的配置文件 类上: @Entity // ...

未来架构师的博客 411

xxl-job快速入门(最全)

某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总以上场景就是任务调度所需要解决的问题任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程XXL-Job:是大众点评的分布式任务调度平台,是一个轻量级分布式任务调度平台, 其核心设计目标是开发迅速、学习简单、轻量级、易扩展大众点评目前已接入XXL-JOB,该系统在内部已调度约100万次,表现优异。

gnwu1111的专栏 1699

Java - 使用hibernate配置文件 + JPA annotation注解操作数据库

  本程序运行环境:IDEA。   实际上我对hiberbate与注解的关系还不是太清晰。据我所知注解都是Java JPA的,那么我的理解是:hibernate就应该只是通过这些JPA标识及hibernate xml配置文件连接数据库并建立对象映射关系。。。也就是说hibernate干的事可能只是自动操作数据库,而注解并不是hibernate中的。貌似看网上一些博客没怎么提hibern...

ding7530的博客 217

8、干式变压器

干式变压器的发展,是人类不断挑战材料科学和热物理极限的过程,每一次技术突破,都是在。温度升高,ε_r反而下降(因为分子活动性增强,极化响应变慢)。:固体导热的热阻比液体对流大一个数量级,这是无法逾越的物理规律。Nomex在高温下不是逐渐分解,而是保持性能直到一个临界点。如果 T_a = 40°C,则 T_c = 146.7°C。干式变压器(固体介质分隔):热场、电场、流场(空气)形成三维氢键网络,即使在高温下也能保持机械强度。:不是在现有技术上修修补补,而是寻找新的。仍在H级绝缘允许范围内(≤180°C)

renpeng2692873032的博客 228

华为OD机试新系统真题 【LLM推理批次最大化】

华为OD机试 新系统真题【LLM推理批次最大化】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【LLM推理批次最大化】多语言题解。

qq_45776114的博客 566

Hibernate的Annotation版本的HelloWorld

之前做的那个需要构建Student.hbm.xml文件,如果使用annotation,那么就不用这些东西了。 但是注意,Hibernate的关于annotation的源码包还包括hibernate-annotation.jar, ejb3-persistence.jar, hibernate-common-annoations.jar,官方文档并没有提到hibernate-common-an

superhill的学习笔记 1089

使用 MATLAB/Simulink 构建一个 核电站汽轮机与发电机协调控制系统 的仿真模型

在核电机组中,汽轮机-发电机系统是将核能最终转化为电能的关键环节。与火电机组不同,核反应堆的热惯性大、功率调节慢,因此汽轮机的控制策略需与反应堆特性相匹配,实现安全、稳定、高效的能量转换。维持发电机输出功率/频率稳定(响应电网调度)调节汽轮机进汽压力(匹配一回路蒸汽供应)实现“堆-机协调控制”保障机组在启停、变负荷、甩负荷等工况下的安全性本教程将带你使用构建一个核电站汽轮机与发电机协调控制系统汽轮机调速系统(调门控制)建模发电机与电网接口建模(同步机)

xiaoheshang_123的博客 188

hibernate对JPA_Annotation的支持实例讲解

JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.JPA是一种规范,而hibernate是JPA的实现,除了hibernate还有EclipseLink也是JPA的实现.JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问

陈晓婵 1421

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

什么是Annotation

Annotation 被称为注解,在Java开发中是相当常见的,通过注解,我们可以简化代码提高开发效率。例如Override Annotation,这个应该算是在开发过程中使用最多的注解了。注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分...

weixin_30352645的博客 184

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Hibernate or JPA Annotation中BLOB、CLOB注解写法

BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的。而CLOB是能够直接存储字符串的。 在hibernate or JPA Annotation中。实体BLOB、CLOB类型的注解与普通的实体属性有些不同,详细操作例如以下:   BLOB类型,类型声明为byte[]:   private byte[] content;   注解:   @Lob   ...

weixin_30298497的博客 326

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hibernate Annotation简单学习

使用JPA Annotation 标注实体      java 通过Annotation可以将一些额外的信息写在java源程序中,这些信息可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在原有逻辑不变的情况下,在源文件中嵌入一些补充信息。    使用Annotation可以避免一个实体需要同时维护两份文件(java类和XML映射文件),实体类的

qq303437511的博客 471

Hibernate+JPA(转)

近年来ORM(Object-Relational Mapping)对象关系映射,即实体对象和数据库表的映射)技术市场人声音鼎沸,异常热闹, Sun在充分吸收现有的优秀ORM框架设计思想的基础上,制定了新的JPA(Java Persistence API)规范。JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。 那么什么是JPA呢?J...

weixin_34088598的博客 120

对@Primary理解

起因是使用JPA时配置了多个数据源 以下是别人的文章。 在spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 @Primary 的作用就出来了。下面是个简单的使用例子。有如下一个接口: @Component // 加注解,让spring识别 public class MetalSinger implements Singer{ @Override pub

zzwpublic的专栏 5万+

注解(Annotation)

码分析工具、开发工具和部署工具可以通过这些补充信息进行验证。有一部分也是基于注解的了,注解是一种趋势,一定程度上。中,注解的使用目的比较简单,例如标记过时的功能,对方法可能抛出的异常进行说明 ,如果方法没有用。对方法中某参数的说明,如果没有参数就不能写。对方法返回值的说明,如果方法的返回值类型是。标明开发该类模块的作者,多个作者之间使用。中注解占据了更重要的角色,例如。用来配置应用程序的任何切面,代替。未来的开发模式都是基于注解的,这三个标记都是只用于方法的。以后也是基于注解的,现在的。

m0_59281987的博客 172

JavaWeb学习-基础知识

JavaWeb学习-概念总结

qq_51922077的博客 750

【hibernate框架3】使用Annotation注解进行实体类操作

上一篇讲的是hibernate的环境搭建,因为现在大部分公司在使用Annotation来操作实体类进而进行表的建立,免去了写Xxx.hbm.xml表映射文件的烦恼,所以我再写一个用Annotation来操作实体类的例子: 导包什么的我就不说了,详情看上一篇吧,直接切入主题: 1.首先说说什么是注解(Annotation),这个学过Java基础的人应该不陌生,这里只说一下在hibernate框架...

weixin_38213517的博客 196

JPA用Hibernate实现环境

1,下载hibernate3.3.2 hibernate-distribution-3.3.2.GA-dist.zip hibernate-entitymanager-3.4.0.GA.zip, hibernate-annotations-3.4.0.GA.rar(这里有hibernate注解包和针对jpa实现的包)。 2,解压文件hibernate-distribution-3.3...

龙云饮雪 162

Spring整合JPA时,为实体类添加@Entity注解时提示The type MultipartEntity is deprecated

这个情况是由于导入错了Entity包所导致的。 按住Alt+T时,会有两个关于@Entity的提示 org.hibernate.annotations.Entity 和 javax.persistence.Entity,我们应该使用javax.persistence.Entity。此时就不会出现过时的提示。 @org.hibernate.annotations.Entity 和 @javax.

yefenglala的博客 5467
上一篇: Spring 配置数据源c3p0与dbcp
下一篇: Hibernate annotation JPA基础配置(注解配置)
MyJavaBlog
博客等级 码龄16年 11粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值