【JPA】字段访问、属性访问及混合访问
【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 {
@Id
private 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;
}
}
【JPA】字段访问、属性访问及混合访问的更多相关文章
- C++:调整基类成员在派生类中的访问属性的其他方法(同名成员和访问声明)
4.3 调整基类成员在派生类中的访问属性的其他方法 4.3.1 同名函数 在定义派生类的时候,C++语言允许在派生类中说明的成员与基类中的成员名字相同,也就是 说,派生类可以重新说明与基类成员同名的成 ...
- C++学习之路—继承与派生(一):基本概念与基类成员的访问属性
(本文根据<c++程序设计>(谭浩强)总结而成,整理者:华科小涛@http://www.cnblogs.com/hust-ghtao,转载请注明) 1 基本思想与概念 在传统的程序设计 ...
- 改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员(整理中)
改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员 序 为什么我们的程序运行得棒棒的,还要改呢?Why? 答:我们要让程序运行得更快,执行的效率更高,代码的可读性更强,维护的成本更低.. ...
- JAVA基础_字符串、访问属性
1.字符串 String s = new String(“123”)不如String s = “123”效率高. 字符串连接操作StringBuilder效率比较高. StringBuff ...
- 浅析对象访问属性的"."和"[]"方法区别
在JavaScript中通常使用”."运算符来存取对象的属性的值.或者使用[]作为一个关联数组来存取对象的属性.但是这两种方式有什么区别了? 例如,读取object中的property属性值 ...
- 在client类中设置访问属性 address,business和individua
php 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好.其实际的目的, 是为了有的场合想用多继承,但PHP又没多继承 ,于是就发明了这样的一个东西. Traits可以理解为一组能 ...
- Apache配置站点根目录、用户目录及页面访问属性
一.配置站点根目录及页面访问属性 DocumentRoot "/www/htdoc" <Directory "/www/htdoc"> Option ...
- C++,关于类和结构体中,成员访问属性(public,private)
今天发现一个的问题: #include <vector> #include <iostream> #include <algorithm> #include < ...
- 《Effective C#》读书笔记-1.C# 语言习惯-1.使用属性而不是可访问的数据成员
思维导图: 大纲: 1.使用属性而不是可访问的数据成员 属性 指定不同的访问权限 隐式属性降低了声明属性的工作量 允许将数据成员作为公共接口的一部分暴露 ...
随机推荐
- Django 自定义分页器
为什么要实现分页? 在大部分网站中分页的功能都是必要的,尤其是在后台管理中分页更是不可或缺 分页能带给用户更好的体验,也能减轻服务器的压力 对于分页来说,有许多方法都可以实现 例如把数据全部读取出来在 ...
- mysql数据库E-R图
学会绘制E-R图 绘制E-R图首先要了解什么是实体,什么是属性,什么是联系. 1.首先实体是指现实世界中具有区分其他事物的特征或属性与其他实体有联系的实体,针对于数据库中的表而言实体是指表中一行一行特 ...
- 移动端viewport模版
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta cont ...
- 移动端vue项目的图片上传插件
有一移动端项目,使用的vant-ui.可是vant自带的Uploader似乎不支持一次选择多张图片上传的功能. 于是乎:在https://www.npmjs.com/查找发现找到 vue-upload ...
- ubuntu server 1604 配置网络信息
对于新安装的linux 服务器(ubuntu server 1604) 一,配置网络 连接网线与路由器 查看系统的网卡信息 ifconfig -a //列出所有的网卡信息,不管启用还是没有启用的 ...
- 新闻实时分析系统-MySQL安装
1.修改yum源 鉴于用国外的Yum源,速度比较慢,所以想到将国外的yum源改为国内的Yum源,这里选择使用比较多的阿里云源.具体修改方法可以参考此连接 2.在线安装mysql 通过yum在线mysq ...
- 前端开发单位em
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python网络爬虫之自动化测试工具selenium[二]
目录 前言 一.获取今日头条的评论信息(request请求获取json) 1.分析数据 2.获取数据 二.获取今日头条的评论信息(selenium请求获取) 1.分析数据 2.获取数据 房源案例(仅供 ...
- VS #region
1.C# 预处理指令 #region使您得以在使用Visual Studio代码编辑器的大纲显示功能时指定可展开或折叠的代码块. #region name 其中:name 希 ...
- 查看/设置JVM使用的垃圾收集器
一.设置垃圾收集器的参数 -XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old -XX:+UseParNewGC,ParNew+Serial Old ...