持久化类的属性及访问方法

一个简单的java持久化类 一个简单的java持久化类,接受ResultSet参数,转化为对象数组 立即下载

-------------------------------------------------------------------

1、持久化类的访问者有两个,一是JAVA应用程序,二是hibernate

 写:Java应用程序通过setter设置持久化对象的属性,hibernate通过getter获取持久化对象的属性并生成相应的SQL语句对表格进行操作。

 读:hibernate通过setter设置持久化对象的属性,Java应用程序通过getter获取持久化对象的属性。

 

2、hibernate访问持久化类属性的策略

Hibernate通过name指定的值访问持久化对象。Hibernate通过name值,反射持久化对象的对方法。比如,name的值为gender。 Hibernate会直接反射持久化对象的getGender和setGender方法。所以我们必须保证持久化对象中有对应的方法。这是因为property有一个access属性,它的默认值为property(推荐)。

如果指定access的值为field,则hibernate直接根据name值反射持久化对象的属性。此时,我们必须保证持久化对象中有对应的属性。

 

3、 在持久化类的方法中加入程序逻辑

如果access的值为property,hibernate直接反射持久化对象的方法。在这个方法中我们就可以加入程序逻辑。老徐举了一个生动的例子,比如Customer类中有firstname和lastname两个属性。但我们只想让hibernate通过getName方法获得一个firstname+lastname的字符串,此时我们就可以在getName方法中将firstname与lastname两个属性值合并为一个中间使用 “.”连接的字符串返回。

 使用hibernate获取数据表中的数据时,hibernate会调用持久化对象的setName方法。我们在这个方法中将传递进来的参数使用“.”分隔,然后分别设置到firestname和lastname属性中。

--------------------------------------------------------------------

 

因为公司里的项目使用注解对hibernate 的实体进行映射,这里,映射存在两种方式,一种是标注在field上,一种是标注在getter方法上,究竟这两种方法有什么不同呢,这个问题困扰了我很久。今天看到上面那解释,写终于解开了谜团。

就像第一点所说的那样,pojo有两个访问者,一是java应用程序,而是hibernate,这两者访问是不同的,java应用程序是通过getter和setter方法来访问的,hibernate是通过反射来访问的,如果你的pojo需要被java访问,那么被访问的属性必须提供getter和setter方法,否则,就不需要了。hibernate访问pojo是可配置的,默认是property,即通过getter和setter,这时你的pojo必须提供这两个方法,如果设置为field,那么hibernate是直接反射field来获取和设置值的,field就必须在pojo里存在,这里关键是明白第二点,即hibernate访问持久化类策略的问题。

 

回归正题,就是关于那个注解标注位置问题,标注在field上就相当于设置access值为field,getter上就相当于设置access值为property

 

这里有一篇不错的技术博客介绍,相当有技巧

http://blog.sina.com.cn/s/blog_4b21f7e9010009cz.html

希望能帮助大家理解

Hibernate自动生成持久化类和映射文件 Hibernate中根据数据库中各表,使用myEclipse的返向工程,自动生成hibernate.cfg.xml 配置文件 与person.hbm.xml映射文件和持久化类 (图文介绍) 立即下载

相关推荐

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

什叫做持久化类?

持久化bai作用是将程序数据du在持久状态和瞬时状态间转换的机制zhi。即把数据dao(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。 一般来说,持久化类(persistent class):可以被hibernate保存到数据库,并且从数据库读取的类。 持久化类:是指其实例需要被Hibernate持久化到数据库中的类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX

weixin_45636617的博客 1456

PowerBuilder 9.0安装组件全解析:Adaptive Server Anywhere、PowerDynamo、InfoMaker到底怎么选?

本文从技术架构师视角详细解析PowerBuilder 9.0安装组件选型策略,包括Adaptive Server Anywhere、PowerDynamo和InfoMaker的核心功能与应用场景。通过分析组件间的依赖关系和安装冲突机制,提供针对不同开发需求的最佳安装方案,帮助开发者高效配置PB9.0开发环境。

weixin_28700593的博客 441

hibernate 初级2

转载      传智播客 ## Hibernate框架第二天 ## ---------- **课程回顾:Hibernate框架的第一天** 1. Hibernate框架的概述:ORM 2. 框架的入门的程序 * 编写映射的配置文件 * 编写核心的配置文件 * 编写程序 3. 配置的文件 4. 使用的接口和方法 ---------- **今天内容**

qq_20147577的博客 282

从零搭建企业级AI网关:基于LiteLLM的安全防护体系设计

本文详细介绍了如何从零搭建企业级AI网关,基于LiteLLM构建全面的安全防护体系。内容涵盖分层防御架构、敏感数据处理、合规性配置与审计追踪,以及生产环境部署策略,助力企业安全高效地集成LLM技术,确保数据安全和合规性。

qq_27496129的博客 1292

YOLOv8人工智能与深度学习——强化学习

本文介绍了将YOLOv8目标检测模型与强化学习结合的方法。主要应用包括自适应目标检测(动态调整检测参数)、主动学习(智能选择标注样本)和多目标跟踪优化。实现方案采用深度Q网络策略,通过定义状态表示、动作空间和奖励函数,使检测系统能根据环境反馈优化性能。该方法具有自适应优化、资源高效、持续改进等优势,能构建更智能的计算机视觉系统。文章详细说明了强化学习环境的构建、策略网络的实现以及训练过程,并提供了代码示例。

u010117029的博客 259

java 持久化类_[Java教程]持久化类(状态介绍)

[Java教程]持久化类(状态介绍)0 2018-09-15 12:00:31叙:之前介绍了持久化、持久化类的相关信息,关于持久化类只讲了相关编写规则等(文章地址:https://www.cnblogs.com/Email-qtl777777/p/9650239.html),关于其内部的更多的划分并没进行细讲,本章电虫就持久化类的三个状态以及三种状态的区分以及三种状态的区分进行学习、...

weixin_35811662的博客 1171

备赛电赛学习硬件篇(二):电源板电路设计

1、输入接口要准备各种接口,如2p端子,锂电池接口,typec等,提供多种电源供电方案2、输出接口3、自由拓展。

m0_61022809的博客 3215

hibernate笔记2——持久化类

1 持久化类的编写规则 1.1 什么是持久化类 持久化:将内存中的一个对象持久化到数据库中的过程。hibernate框架就是用来进行持久化的框架。 持久化类:一个java对象与数据库的表建立了映射关系。 1.2 持久化类的编写规则 对持久化类提供一个***无参的构造方法*** (hibernate的底层需要用反射生成实例) 属性需要私有,对私有属性提供public的***set和get方法*...

积石成岩,流则不荒 267

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6988

用 ADT 连接 SAP S/4HANA Public Cloud 开发租户的完整落地指南

摘要:在SAP S/4HANA公有云中进行ABAP开发时,必须使用Development Tenant(客户端080)而非Customizing Tenant(客户端100)连接ADT工具。开发用户需具备SAP_BR_DEVELOPER角色且写权限不受限,开发对象应创建在结构包的子包中。连接前需确认正确的ABAP服务URL(通常为Launchpad URL去掉"/ui"),并通过运行控制台程序验证全链路功能。典型开发场景如通过BAdI实现业务校验时,需遵循Clean Core原则在指定包

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 339

Hibernate 持久化类

实体类:持久化类通常称为实体类,它们代表数据库中的表。标识符:每个实体类需要有一个标识符字段,通常是主键。映射:使用 JPA 注解或 XML 文件定义实体类与数据库表之间的映射关系。

qq_33240556的博客 573

uniapp:实现扫描二维码+自定义扫描框+扫一扫功能,支持扫码识别二维码、条形码(条码)、微信/支付宝等二维码功能,自定义扫码页面可添加按钮或文字展示布局(移动端H5网页/小程序/安卓苹果APP端)

UNI-APP实现扫描二维码,uniapp扫描条形码,uniapp实现扫一扫功能,扫码成功后跳转页面,uniApp扫描条码,uniApp-H5 使用摄像头扫码功能(扫一扫),实现手机扫描二维码并跳转全过程示例代码,用户扫码后自动跳转到链接,uniapp怎么调用扫一扫功能,uniapp实现扫一扫功能,uniapp请求相机使用权限,扫一扫权限申请,uniapp调用摄像头扫码,uniapp实现调用相机扫码,UniApp 实现扫描二维码,uniapp APP安卓苹果ios实现扫码扫一扫,Uniapp微信小程序扫描二

✅ 精选推荐文章 4708

Hibernate访问持久化类(派生)属性的方法与策略

【转自:http://blog.sina.com.cn/s/blog_4fe8c9230100ks9f.html】     Hibernate访问持久化类属性的方法可通过setXXX()和getXXX()方法。这是优先推荐的方式,可以灵活的封装持久化类,提高域模型的透明性。若持久化类没有提供setXXX()和getXXX()方法,可以在映射文件中设置属性为field,持久化类中设置属性为publ

L-BAKE 875

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hibernate设置派生属性, 在持久化类的访问方法中加入程序逻辑...

       假定Customer类有一个avgPrice属生, 表示这个客户的所有订单的平均价格. 它的取值为与它关联的所有Order对象的price的平均值. 在CUSTOMERS表中没有 avg_price字段. 可以在Customer类的setOrders()方法中加入程序逻辑来实现:    private Set orders = new HashSet(0);    private d

永恒小菜的专栏 1661

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Hibernate持久化类要遵循的四条主要原则

1、实现一个默认的(即无参数的)构造方法(constructor) 所有的持久化类都必须有一个 默认的构造方法(可以不是public的),这样的话Hibernate就可以使用 Constructor.newInstance()来实例化它们。 强烈建议,在Hibernate中,为了运行期代理的生成,构造方法至少是 包(package)内可见的。

Mr_Tank_ 1162

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

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

Hibernate持久化类

持久化类: 遵循四条主要的规则: 1、实现一个默认(即无参数的)构造方法(constructor)构造方法可以不是public的,hibernate可以使用ConStructor.newInstance()来实例化它们。强烈建议,在Hibernate中,为了运行期代理的生成,构造方法至少是包内可见的。 2、提供一个标识属性(可选)映射到数据库表的主键字段。这个属性类型可以是任何的原始类型、原始类型...

asbss的博客 229

项目添加hibernate支持对持久化类的要求

hibernate使用简单的java对象这种编程模型来进行持久化。持久化类需要遵循四条主要的规则: 1.为属性字段声明访问器,hibernate默认使用protected或者private的get/set方法对,字段不需要声明为public。(可以简单测试下) 2.实现一个默认的无参构造方法:所有的持久化类都必须有一个默认的构造方法(可以不是public),这样hibernate就可以使用Co

dong_pongkk999的专栏 554

Hibernate 如何操纵持久化对象

操纵持久化对象   1.   理解Session的缓存: 在Java里面,缓存通常是指Java对象的属性占用的内存空间(实质),通常是一些集合类型的属性(Hashmap、Set、List)。在session接口的实现类SessionImpl中定义了一系列的Java集合,这些Java集合就构成了Session的缓存。 当Session的save()方法持久化一个对象时,这个对

langjian2012的专栏 758

NHibernate文档翻译 第3章 持久化类(Persistent Classes)

第 3 章 持久化类(Persistent Classes) 目录 POCO 简单示例 为持久化字段声明访问器(getters 和 setters) 实现一个默认的构造方法(constructor) 提供一个标识属性(identifier property)(可选) 建议使用不是sealed的类 (可选) 实现继承(Inheritance) ...

weixin_30621711的博客 159

持久化类(Persistent Classes)

第 5 章 持久化类(Persistent Classes)在应用程序中,用来实现业务问题实体的(如,在电子商务应用程序中的Customer和Order) 类就是持久化类。不能认为所有的持久化类的实例都是持久的状态——一个实例的状态也可能 是瞬时的或脱管的。 如果这些持久化类遵循一些简单的规则,Hibernate能够工作得最好,这些规则被称作, 简单传统Ja

待定的专栏 2018

Hibernate学习笔记二 ---持久化Java类必须遵循的原则

 q1.为类的持久化类字段申明访问方法(get/set)。Hibernate对JavaBeans风格的属性实行持久化。 q q2.实现一个默认的构造方法(constructor)。这样的话Hibernate就可以使用Constructor.newInstance()来实例化它们。 q q3.如果是集合类型的属性,它的类型必须定义为集合的接口。例如:L

319

POJO类以及映射配置文件

对持久化对象的要求 1、 提供一个无参构造器,使Hibernate可以使用Constructor.newInstace()来实例化持久化对象 2、提供一个标识属性(identifier property)。通常映射为数据库表的主键字段,如果没有该属性,一些功能将不起作用,如Session.saveOrUpdate()。 3、 为持久化类的字段声明访问方法(set/get)。Hibernate

翻滚吧小牛 1667
上一篇: hibernate 中class标签的entity-name属性
下一篇: 禁止hibernate启动是自动生成CRUD语句和hibernate实现命名约定
crazy_pan
博客等级 码龄16年 12粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值