hibernate中的Annotation补充

Centos7.9上安装glibc2.28遇到/usr/bin/ld: cannot find -lnss_test2问题 Centos7.9安装glic2.28遇到-lnss_test2问题及解决方案。 阅读详情

下面使用Annotation来定义一个实体类:

@Entity

@Table(name="person_table")                                       //不是引入org.hibernate.persistence,因为这个只可以在hibernate环境下使用

public class Person                                                              //应引用javax.persistence,其实Annotation最后是放在get方法上面,更不容易出问题

{

 

@EmbeddedId

@AttributeOverrides({

@AttributeOverride(name="first"

, column=@Column(name="person_first")),

@AttributeOverride(name="last"

, column=@Column(name="person_last" , length=20))

})

private Name name;

//普通属性

@Column(name="person_email")

private String email;

@Embedded

@AttributeOverrides({

@AttributeOverride(name="name" 

, column=@Column(name="cat_name" , length=35)),

@AttributeOverride(name="color" 

, column=@Column(name="cat_color"))

})

//组件属性,代表此人拥有的宠物

private Cat pet;

//省略name属性的setter和getter方法

...

//省略email属性的setter和getter方法

...

//省略pet属性的setter和getter方法

...

}

上面程序的粗体字代码就可管理实体类与数据表之间的映射关系,其中@Entity用于标注该类是一个持久化类,@ EmbeddedId用于标注复合类型的标识属性,而@Embedded用于标注一个组件属性,也就是说Person的name属性就是一个复合类型的标识属性;pet属性是一个组件属性。

 

上面程序还用了Name类,它是一个Person实体的标识属性的类型,程序使用@Embeddable标注它即可。如下代码所示:

//修饰组件属性类

@Embeddable

public class Name

implements java.io.Serializable

{

private String first;

private String last;

//无参数的构造器

public Name()

{

}

//初始化全部属性的构造器

public Name(String first , String last)

{

this.first = first;

this.last = last;

}

//省略first属性的setter和getter方法

...

//省略last属性的setter和getter方法

...

//提供重写的equals方法

public boolean equals(Object obj)

{

if (this == obj)

{

return true;

}

if (obj.getClass() == Name.class)

{

Name target = (Name)obj;

if (target.getFirst().equals(first)

&& target.getLast().equals(last))

{

return true;

}

}

return false;

}

//提供重写的hashCode方法

public int hashCode()

{

return first.hashCode() + last.hashCode() * 17;

}

}

上面Name类需要作为标识属性的类型,因此一样需要实现java.io.Serializable接口,并重写了hashCode()和equals()两个方法。

 

至于Person类所包含的组件属性pet,它所属的Cat类也只要简单地使用@Embeddable修饰即可,下面是该Cat类的代码:

//修饰组件属性类

@Embeddable

public class Cat

{

private String name;

private String color;

//无参数的构造器

public Cat()

{

}

//初始化全部属性的构造器

public Cat(String name , String color)

{

this.name = name;

this.color = color;

}

//省略name属性的setter和getter方法

...

//省略color属性的setter和getter方法

...

}

 

一旦在实体类中通过上面Annotation进行标注之后,Hibernate已经能够理解实体类与数据表之间的映射关系了,也就不再需要*.hbm.xml的映射文件了。此时要将hibernate.cfg.xml文件略做修改——告诉它去加载指定实体类,而不是根据映射文件加载。本应用所使用的hibernate.cfg.xml文件代码如下:

<?xml version="1.0" encoding="GBK"?>

<!-- 指定Hibernate配置文件的DTD信息 -->

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<!-- hibernate- configuration是连接配置文件的根元素 -->

<hibernate-configuration>

<session-factory>

<!-- 省略其他配置属性 -->

...

<!-- 罗列所有的持久化类 -->

<mapping class="org.crazyit.app.domain.Person"/>

</session-factory>

</hibernate-configuration>

经过上面修改之后,主程序不需要任何改变。不管使用XML映射文件管理实体的映射、还是采用Annotation管理实体的映射,Hibernate的处理完全相同。


电感选型不当的代价:从纹波激增到系统失稳的深度剖析 本文深度剖析了电感选型不当对开关电源系统的严重影响。电感值过小会导致纹波电流激增、元件热应力加剧、EMI超标乃至MOSFET击穿;电感值过大则会引起环路响应迟滞、动态性能下降和轻载效率恶化。文章通过实测案例,强调了超越经典公式进行动态与容差考量的必要性,并提供了基于饱和电流、温升电流及环路测试的精准选型方法论,帮助工程师规避从纹波失控到系统失稳的潜在风险。 阅读详情

相关推荐

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7148

@AttributeOverrides和 @AttributeOverride

@AttributeOverrides和 @AttributeOverride @sunRainAmazing hibernate jpa注解 @AttributeOverrides和 @AttributeOverride@AttributeOverrides: 用于覆盖多个属性或字段的映射。格式 @AttributeOverrides({ @AttributeOve

sunrainamazing的博客 6381

TwinCAT3新手必看:5分钟搞定EtherCAT从站PDO动态配置(附电流变量添加技巧)

本文为TwinCAT3新手提供了EtherCAT从站PDO动态配置的快速入门指南。文章详细解析了Process Data Object(PDO)在实时数据交换中的核心作用,并分步演示了在TwinCAT3工程中扫描从站、动态添加与映射PDO(包括接收PDO和发送PDO)的完整操作流程。重点分享了如何灵活添加并监控如电机实际电流等关键工艺变量的高级技巧,并针对不同品牌驱动器的兼容性问题提供了实用的调试心法和解决方案,帮助工程师快速上手并优化工业自动化系统。

xgboost6farmer的博客 454

使用Hibernate,你需要知道这些

虽然说Hibernate 在国内的使用人群没有多少,但是如果项目中要使用hibernate,需要知道以下几个方面。 一、常用注解 1、声明实体bean 每一个持久化POJO类都是一个实体bean,这可以通过在类的定义中使用@Entity注解来进行声明: @Entity public class Flight implements Serializable { Long id; ...

会忆 714

【计算机组成原理实验】状态机实验

理解“状态机”概念,掌握“状态机”思想描述时序系统。通过下列三种基于D触发器的计数器结构,构建状态机的状态转移电路:环形计数器、扭环计数器和条件判断的扭环计数器。基于“状态机”原理,设计一个“交通灯”系统:控制红黄绿信号灯按照以下顺序循环点亮:“绿 黄 红 绿 ……”,红灯、绿灯和黄灯的亮灯持续时间可以通过拨码开关独立设置。红灯和绿灯是持续亮灯模式,黄灯则是闪烁亮灯模式。

Rover_jb的博客 1332

23.网工入门篇--------介绍一下园区网典型组网架构及案例实践

园区网典型组网架构主要分为小型、中型、大型三种类型,以下是详细介绍及相关案例实践:

qq_31450765的博客 965

Hibernate中@Embedded和@Embeddable注解的使用

在使用实体类生成对应的数据库表时,很多的时候都会遇到这种情况:在一个实体类中引用另外的实体类,一般遇上这种情况,我们使用@OneToOne、@OneToMany、@ManyToOne、@ManyToMany这4个注解比较多,除了这四个有没有别的使用情况,尤其是一个实体类要在多个不同的实体类中进行使用,而本身又不需要独立生成一个数据库表,这就是需要@Embedded、@Embeddable的时候了,...

azhegps的博客 4107

2023华为od机试【最小循环子数组】C++

2023华为od机试【最小循环子数组】C++ 给定一个由若干整数组成的数组nums,请检查数组是否是由某个子数组重复循环拼接而成,请输出这个最小的子数组。

MISAYAONE的博客 2185

Hibernate联合主键 注解方式实现

项目中遇到的问题: 用户表,标签表,用户标签关系表。其中用户标签关系表中,保存用户id和标签id,为保证数据唯一,用户id和标签id作为联合主键。分享一下过程。 1.建表语句 CREATE TABLE `bifex_nr`.`test_user_label_relation`  (   `userId` int(11) NOT NULL,   `labelId` int(11) NOT NU...

codeLife1993的博客 1471

Windows上MSYS2的安装和使用

MSYS2这个工具我是越用越喜欢,很多东西放在Linux上如鱼得水但是放在Windows上就没那么好用,比如ffmpeg,opencv等直接引用就行了,这个工具真的很省事。接下来带你们看看它的妙用。1、好好研究确实妙用无穷。

jiexijihe945的博客 4143

基于STM32设计的智能水产养殖系统(华为云IOT)(152)

当前设计的智能水产养殖系统主控芯片采用STM32F103RCT6,可以实现对水位、水温、水混浊度和PH值等参数的监测和控制,并且支持定时投喂功能。通过连接华为云物联网平台,将传感器数据上传到服务器,并通过Qt设计的Android手机APP来获取设备上传的数据,从而实现对养殖环境的远程监测和控制。

8829

Hibernate4 annotation实例补充

使用hibernate最新版本:hibernate-release-4.2.5.Final 本文是对之前的hibernate4 annotation实例的补充说明 hibernate4配置文件头信息(不可缺省)为: &lt;?xml version='1.0' encoding='utf-8'?&gt; &lt;!DOCTYPE hibernate-configuration PUBL...

落叶→知秋 146

PCL 从LAS文件中获取点云的颜色【2026最新版】

PCL从LAS文件中获取点云的RGB信息(pcl::PointXYZRGB)并进行可视化。博客长期更新,本文最新更新时间为:2026年5月4日。

点云侠的博客 1720

hibernate中的Annotation补充 联合主键

下面使用Annotation来定义一个实体类: @Entity @Table(name="person_table")                                       //不是引入org.hibernate.persistence,因为这个只可以在hibernate环境下使用 public class Person                  

gao454917848的专栏 515

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring MVC3 Hibernate3 Annotation 补充

通过配置文件进行事务声明 app-config.xml [code="xml"] com.mysql.jdbc.Driver jdbc:mysql://localhost/blog?useUnicode=true&amp;characterEncoding=utf-8 root ...

zjnbshifox 189

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

注解(Annotation)

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

m0_59281987的博客 173

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

注解(1)_注解的引入

【1】历史: JDK5.0 新增 — 注解(Annotation),也叫元数据 【2】什么是注解? 注解其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用注解,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 使用注解时要在其前面增加@符号,并把该注解当成一个修饰符使用。用于修饰它支持的程序元素。 【3】注解的重要性: Annotation 可以像修饰符一样被使用,可用于修

qq_51550750的博客 244

Hibernate Annotation

Hibernate Annotation 使用hibernate Annotation来映射实体准备工作下载hibernate-distribution-3.3.2.GAhibernate-annotations-3.4.0.GAslf4j导入相关依赖包Hibernate HOME:/hibernate3.jar/lib/by

孤独的狼 2223

Spring中使用Hibernate3的Annotation

Hibernate3 Annotation的SessionFactory创建需要有两个地方与用mapping resource的方式不同:Configuration需要使用新的org.hibernate.cfg.AnnotationConfiguration需要使用新的mappingClass元素而不是使用mappingResourceorg.springframework.orm.hiberna

张玮的专栏 1万+

Hibernate的Annotation版本的HelloWorld

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

superhill的学习笔记 1089

hibernate对JPA_Annotation的支持实例讲解

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

陈晓婵 1421

Hibernate Annotation简单实现

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font

Benson Wang 专栏 3858

使用Annotation开发Hibernate

使用Annotation开发Hibernate Hibernate提供有以下注解: 注解 说明 @Entity 标识当前类为实体类,使用默认 ORM 规则,即类名映射数据库中对应的表名,属性名映射数据表中列名。 @Table 如果类名和数据表名不一致,使用 @Table(name = "数据表名")标识当前类对应的数据表名。 @Id 当前实体类的唯一性标识,通常映射到数据表...

Nicholas_GUB的博客 248

10 08Hibernate之利用Annotation开发

在Hibernate的设计初期,考虑到配置文件与程序相分离的特点,所以来讲定义出了一系列的*.hbm.xml文件,目的是让简单Java类与数据表的字段进行一个有效的验证,可是却产生了一个严重的问题——在任何一个中大型项目之中,数据表至少会存在有几百个,那么如果所有的简单Java类都要定义一个与之完全对应的*.hbm.xml文件,那么这回项目就乱了。整个项目完成之后就同时存在有几百个配置文件,如果要修改,要从几百个配置文件之中选择所需要的内容,并且很多时候还会存在有关联问题。 随后在Java行业内考虑到了数据

weixin_43762330的博客 169

hibernate annotation总结

采用hibernate 3.6 final版实验。 类图: 代码: Salesman.java: package basicCar.bean; import java.util.HashSet; import java.util.Set; import javax.persistence.AttributeOverride; import javax.persist

happyunbound的专栏 5160

hibernate Annotation简单学习

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

qq303437511的博客 471
上一篇: 罗马假日
下一篇: @GeneratedValue
fancylovejava
博客等级 码龄16年 1052粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值