博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JPA】字段访问、属性访问及混合访问
阅读量:5156 次
发布时间:2019-06-13

本文共 1899 字,大约阅读时间需要 6 分钟。

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

转载:

1、字段访问

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

写法一

@Id private int id;

写法二

@Idprivate int id;

2、属性访问

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

写法一

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

写法二

@Idpublic 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; }}

 

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

你可能感兴趣的文章
gdb打印STL和boost容器
查看>>
HDU4790
查看>>
MySQL安装相关
查看>>
[LeetCode] Remove Element 分析
查看>>
编译安装httpd-2.4.12
查看>>
spring boot 自定义过滤器链
查看>>
刷新当前页
查看>>
最大乘积 Maximun Product
查看>>
linux 使用ssh-keygen生成ssh公钥和私钥
查看>>
HTTP 请求
查看>>
Jboss编码问题
查看>>
Spring+Spring Boot+Mybatis框架注解解析
查看>>
MyBatis之基于XML的动态SQL
查看>>
brew 、carthage 安装
查看>>
OBIEE 11g 启动与停止包含服务器重启
查看>>
thinkphp自动验证分析
查看>>
[c语言]运算符的优先级与结合性
查看>>
第 10 章 数组和指针
查看>>
安装nginx
查看>>
未能加载文件或程序集或它的某一个依赖项
查看>>