【JPA】字段访问、属性访问及混合访问

转载:https://www.cnblogs.com/yangchongxing/p/10120318.html

1、字段访问

注解字段,通过反射来获得和设置字段实体,若getter和setter方法存在,那么会忽略他们。也就是说以后的getter和setter方法不会被使用。有一下两种写法,根据个人喜好定。

写法一

@Id private int id;

写法二

@Id
private int id;

2、属性访问

注解方法,getter和setter方法将由程序调用,用于访问和设置状态。有一下两种写法,根据个人喜好定。

写法一

@Id public int getId() {return id;
}

写法二

@Id
public int getId() {return id;
}

3、混合访问

同时注解字段和方法,使用@Access注解 覆盖默认的访问模式 或者 数据在读取和写入到数据库的过程中执行一个简单的数据转换。

看一个例子,比如电话phone在写入数据库时要追加区号010-,而表示时却不显示。
首先通过@Access(AccessType.FIELD)显式标记类的访问为字段访问。如果字段和属性都被注解,那么它将是未定义的。
然后通过@Access(AccessType.PROPERTY) @Column(name="phone")注解属性,有意识的区别于默认情况,对数据进行转换格式。
最后通过@Transient把要使用持久化的字段标记为临时的,防止默认的访问规则导致状态被持久化两次。
代码如下:

package cn.ycx.entity;import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;@Entity
@Access(AccessType.FIELD) //显式标记类的默认访问模式为字段访问
public class Employee {@Idprivate int id;private String name;@Transient //标记字段为临时的防止被持久化两次private String phone;private long salary;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return "010-" + phone;}public void setPhone(String phone) {this.phone = phone;}@Access(AccessType.PROPERTY)//有意识的区别于默认情况,对数据进行转换格式@Column(name="phone")public String getPhoneForDb() {//存入数据库时追加010-return "010-" + this.phone;}public void setPhoneForDb(String phone) {//从数据库读出时去掉010-this.phone = phone.substring(4);}public long getSalary() {return salary;}public void setSalary(long salary) {this.salary = salary;}
}

转载于:https://www.cnblogs.com/yangchongxing/p/10120318.html

【JPA】字段访问、属性访问及混合访问相关推荐

  1. 4.3调整基类成员在派生类中的访问属性的方法

    同名成员 在定义派生类的时候,C++语言允许派生类与基类中的函数名相同.如果在派生类中定义了与基类中相同的成员,则称派生类成员覆盖了基类的同名成员,在派生类中使用这个名字意味着访问在派生类中重新说明的 ...

  2. 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等

    这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...

  3. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )

    文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...

  4. 疯狂Kotlin讲义学习笔记07章:面向对象(上)对象,中缀,解构,幕后字段、属性,延迟初始化,访问控制符,构造器,继承,重写,super限定,重写,多态,is类型检查,as强制类型转换

    1.定义类的标准格式 修饰符 class 类名 [ constructor 主构造器]{零到多个次构造器定义零到多个属性....零到多个方法.... } 修饰符open是final的反义词,用于修饰一 ...

  5. 1.1 - C#语言习惯 - 使用属性而不是可访问的数据成员

    属性一直是C#语言中的一等公民.自1.0版本以来,C#对属性进行了一系列的增强,让其表达能力不管提高.你甚至可以为setter和getter指定不同的访问权限. 隐式属性也极大降低了声明属性时的工作量 ...

  6. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

  7. 荐读|属性与可直接访问的数据成员之间应该如何选

    写在前面 在书写C#代码的时候你是否有过这样的经历:经常混用属性以及公有的数据成员.毕竟他们的用法基本一致,对于使用来说好像没什么区别啊.其实我也经常使用类的公有的数据成员来定义一些常量,为了简单,在 ...

  8. 浅析对象访问属性的.和[]方法区别

    原文链接:http://www.cnblogs.com/bigboyLin/p/4967820.html 简明版:请问js对象属性值为什么用数组也可以访问 在JavaScript中通常使用" ...

  9. C++访问属性和继承属性浅析

        对于初学者C++的属性控制以及继承属性还是比较那掌握的,笔者在这里总结一下自己学习这些过程的见解.首先我们来看: 1.C++支持的访问属性有public.protected.private,下 ...

最新文章

  1. 皮一皮:千万不要把可乐放冷冻...
  2. 一个人,开始变得优秀,就会渐渐地从这些圈子消失了
  3. 手动编译php,手动编译安装php7的方式
  4. 理论修炼之RabbitMQ,消息队列服务的稳健者
  5. 菜鸟学ASP.NET MVC4入门笔记
  6. 深度学习中Attention机制的“前世今生”
  7. 电脑显示苹果5s未连接服务器怎么办啊,iphone5s数据线连接不上电脑怎么办【解决方法】...
  8. 全国高校“数据科学与大数据技术”专业教学研讨会
  9. vs vb连接mysql,用vs2010的vb.net建立和access数据库的连接后的奇怪问题:关于本地复制...
  10. 商品分析是什么?该怎么做(入门版)
  11. 信息安全管理——网络安全监管
  12. Mac多Python版本共存,多个独立Python开发环境切换。
  13. 面试中被问到“为什么从上一个单位离职”怎么回答
  14. 一个IT小菜鸟的成长之路
  15. C++ 编写一个解释器
  16. c语言字符 ul,c语言 #define 中的UL
  17. 【分享】asp.net WebChart 折线图、饼形图、柱状图
  18. 搭建视频会议系统OpenMeetings
  19. USB AVR JTAGICE MKII-CN仿真器使用
  20. 2014年OA软件市场品牌分析报告

热门文章

  1. mediarecorder路径设置为localsocket_PR学习之旅:pr怎么才能定位和修改视频保存路径,操作很简单...
  2. 24岁大专非科班转行前端开发可行性有多少?
  3. 二维数组初始化为0的方式
  4. Qt 该文件不能在当前页码(936)中表示字符
  5. matlab图像处理 推荐,Matlab计算机视觉、图像处理工具箱推荐
  6. php下载数组里的图片,php 读取txt文件中的内容,转换成数组,根据URL将图片下载到本地(curl爬取)...
  7. 数据库主备_数据库周刊40丨OceanBase官网上线开发者社区;人民日报关注易鲸捷;数据库迁移经验分享…...
  8. java token redis生成算法_如何访问 Redis 中的海量数据,服务才不会挂掉?
  9. Java功能模块代码源码_Windows计算机功能Java源码
  10. 下行文格式图片_收藏!公文写作格式大全(附示例图)