Java实体类(entity)作用说明

对java实体类的众多理解:

A .就是属性类,通常定义在model层里面

B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。

好处:

1.对对象实体的封装,体现OO思想。

2.属性可以对字段定义和状态进行判断和过滤

3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。

C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句

D. 就是一个数据库表生成一个类

这样做对数据库操作起来方便

编写代码较少 提高效率 可以使程序员专注逻辑关系

E. 实体类就是把对某一个表的操作全写在一个类中.

F. 在Java开发中经常要定义一些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,以下是别人总结的一些经验。

一、实体类的名字尽量和数据库的表的名字对应相同。

二、实体类应该实现java.io.Serializable接口。

三、实体类应该有个无参的构造方法。

四、实体类应该有个有参(所有的参数)的构造方法。

五、实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。

六、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;

七、属性一般是private类型,方法位public类型,对于数据库自动生成的ID字段对应的属性的set方法应为private。

G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了一个该对象引用空间,并且让该引用指向某个实例,类声明只是在jvm的栈去中开辟了一个该对象引用,没有让该引用做任何指向.

例如 :

1.String str;

2.String str = new String ("dgfgg");

1中的只是一个引用,说明str应该指向一个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例.

而2中的即定义了一个引用(str)又对str做了具体的指向,它指向的内容就是后面new出来的String 实例.

实体类中的构造方法+set方法+get方法:

构造函数:初始化成员变量

get,set方法,获取和改变成员变量的值,JavaBean规范规定只使用get/set访问成员变量

构造函数:你每次写一个Java文件,实际上都写了一个类(创建一个类,jvm就会自动为这个类开辟一块内存空间)。有了类就需要有类对象,要产生类对象就需要构造函数对这个刚刚申请的内存空间做一点事,赋属性值之类的工作。当然,如果你不写,它就默认有一个Class(){}的构造方法出现,当然它什么活也不干。

你的属性是什么样的?public?private?默认?还是protected?这四种你找教材务必弄懂分清,很有用。如果是private,这种属性不许别的对象改和读,但有时候需要改/读,怎么办?写一个public void setAbc(xxx){}和一个public xxx getAbc(){}就实现外部读写属性的功能了。

set ,get完全是自我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是用set ,get还是要好些,因为你能通过单词理解你写的代码的意思,方便阅读而已。

总结:实体是就是Java中的O/R Mapping映射,即数据库中的一个表映射成对应的一个Java类,其中还有一个映射文件。给定一个较复杂的实体关系(如一对一,一对多,多对多),应该熟练地写出实体类!!

java 实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的。

POJO(PlainOldJavaObjects)简单的Java对象

它的一般格式就是

  publicclassA{

    privateStringid;
    publicStringgetId{
    returnthis.id;

    }
  publicvoidsetId(Stringid){
    this.id=id;
    }
  }

其实这样写的意义就在于封装,id作为类A的成员变量,也称属性,一般情况下拥有读和写的能力,我们将id设为private,则外部无法对其直接进行操作,同时通过set方法提供了外部更改其value的方法,又通过get方法使外界能读取该成员变量的值。

序列化的必要性

Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。

Java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。

Java串行化技术可以使你将一个对象的状态写入一个Byte流里,并且可以从其它地方把该Byte流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停止之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。提到持久化,最直接的做法是保存到文件系统或是数据库之中。这种做法一般涉及到自定义存储格式以及繁琐的数据转换。

对象关系映射(Object-relationalmapping)是一种典型的用关系数据库来持久化对象的方式,也存在很多直接存储对象的对象数据库。对象序列化机制(objectserialization)是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组(流)之间进行转换。除了可以很简单的实现持久化之外,序列化机制的另外一个重要用途是在远程方法调用中,用来对开发人员屏蔽底层实现细节。

补充知识:java 万能类型转化

是什么:

java 万能类型转化工具类,提供Short、Integer、Long、short、int、long 和 String之间的互转,且支持当对象为空时,进行对象的创建。

怎么做:

见代码:

/**
   * 如果对象为空,则创建,支持类型装换
   *
   * 只支持 Long Integer Short 和 String 之间的互转
   * @param obj Object
   * @param clazz Class<T>
   * @param <T> T
   * @return <T>
   */
  public static <T> T ifNullCreate(Object obj,Class<T> clazz){
    T result = null;
    if(obj == null){
      try {
        result = clazz.newInstance();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }else {
      if(clazz.isInstance(obj)){
        result = (T)obj ;
      }else if (clazz.equals(Long.class) && obj.getClass().equals(String.class)){
        Object o = Long.parseLong((String)obj) ;
        result = (T)o;
      }else if (clazz.equals(Integer.class) && obj.getClass().equals(String.class)){
        Object o = Integer.parseInt((String)obj) ;
        result = (T)o;
      }else if (clazz.equals(Short.class) && obj.getClass().equals(String.class)){
        Object o = Short.parseShort((String)obj) ;
        result = (T)o;
      }else if (clazz.equals(String.class) && (
          obj.getClass().equals(Long.class)
              || obj.getClass().equals(long.class)
              || obj.getClass().equals(int.class)
              || obj.getClass().equals(Integer.class)
              || obj.getClass().equals(short.class)
              || obj.getClass().equals(Short.class) )){
        Object o = String.valueOf(obj) ;
        result = (T)o;
      }
    }
    return result;
  }

为什么?

日常开发中,含有大量的类型转化和空值处理,提供一个万能接口很必要……

以上这篇Java实体类(entity)作用说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java 通过反射给实体类赋值操作

    表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了, 怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题. 所以就有了这样一个类,只需把request和实体类对象传进去就行了, 这样就会得到一个有值的实体类对象 下面是代码示例 import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Date; import ja

  • java中实体类和JSON对象之间相互转化

    在需要用到JSON对象封装数据的时候,往往会写很多代码,也有很多复制粘贴,为了用POJO的思想我们可以装JSON转化为实体对象进行操作 package myUtil; import java.io.IOException; import myProject.Student; import myProject.StudentList; import org.codehaus.jackson.map.ObjectMapper; import org.json.JSONArray; import or

  • JavaBean实体类处理外键过程解析

    数据库中的表在映射为JavaBean的实体类时,实体类的字段名应与数据库表中的字段名一致.那么外键要怎么处理? 1. JavaBean中实体类中不应该出现外键字段,弊端如下 : 如果出现外键对应的字段,那么将会出现一个对象与另一个对象的属性相对应,这将不是面向对象中的对象与对象对应. 单个外键只能存储一个字符串,用处不大 2.外键处理方式 :数据库表中的外键字段应当转换成外键对应的表的对象,也就是JavaBean的实体类不声明外键的字段,而是声明外键对应数据表类的类型.举个例子,如下 : 数据库

  • Java实体类(entity)作用说明

    对java实体类的众多理解: A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段. 好处: 1.对对象实体的封装,体现OO思想. 2.属性可以对字段定义和状态进行判断和过滤 3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便. C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句 D. 就是一个数据库表生成一个类 这样做对数据库操作起来方便 编写代码较少 提高效率 可以使程序员专注逻辑关系 E.

  • Android项目中实体类entity的作用详解

    估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么? 对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记. Java中entity(实体类)的写法规范 在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法.entity(实体类)的作用一般是和数据表做映射.所以快速写出规范的entity(实体类)是java开发中一项必不可少的技能. 在项目中写实体类一般

  • Java实体类实现链式操作实例解析

    这篇文章主要介绍了Java实体类实现链式操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 原来是这么写bean的,单纯的使用get.set方法,再加一个toString package Model; /** * @author: Davion * @date: 2019/12/11 * @description: */ public class User { private Integer id; private String nam

  • idea中Java实体类怎样生成序列化的版本号的方法

    例如: 单击File->单击Settings, 在对话框左侧目录中找到,Editor->Inspections,并单击选中: 在右边的输入框里输入serializable 找到 Serializable class without 'serialVersionUID并在后面打上勾: 于是乎在实体类的类名上面,alt+enter 点击生成序列化版本号 到此这篇关于idea中Java实体类怎样生成序列化的版本号的方法的文章就介绍到这了,更多相关idea实体类序列化内容请搜索我们以前的文章或继续浏览

  • Mysql字段和java实体类属性类型匹配方式

    Mysql字段和java实体类属性类型匹配 参见下图: 数据库字段转实体类字段 DROP FUNCTION IF EXISTS f_spiltStr; CREATE FUNCTION `f_spiltStr`(DATA1 varchar(50)) RETURNS varchar(1000) CHARSET utf8 BEGIN SET @length = LENGTH(DATA1) - LENGTH(REPLACE(DATA1,'_','')); SET @i = 1; set @result

  • java实体类转成map的实现

    目录 java实体类转成map 1.第一种 2.第二种 java实体类与map集合互转 java实体类转成map 1.第一种  <!-- 配置gson -->         <dependency>             <groupId>com.google.code.gson</groupId>             <artifactId>gson</artifactId>             <version&

  • Java实体类中Set按照对象的某个字段对set排序

    背景: User实体类 有个属性是 Set<PositionChange> 职位变更字段 如下: PositionChange实体类 有个属性是positionStartDate 什么时候开始任职此职务的字段 现在有一个需求,想在查询出 User这个对象的时候 ,可以获取到 Set<PositionChange>中 用户最新任职的一条岗位记录,也就是展示当前用户所处的岗位信息. 但是,Set始终的无序的,想要取出Set中PositionChange的positionStartDat

  • Java实体类不要使用基本类型的知识点总结

    今天来记录一下,在项目中因为基本类型,所产生的bug 包装类:8种基本类型的包装类 应用场景:数据库建立实体映射多用包装类 这两句话是重点:就是建立实体类禁止使用基本数据量类型!!!而用对应的包装类, 为什么呢,看以下场景. JAVA代码 <font style="color:rgb(77, 77, 77)"><font face="&quot"><font style="font-size:16px">

  • Jackson2的JsonSchema实现java实体类生成json方式

    目录 核心工具类 怎么使用 测试用的实体类 用法 转换结果 除Swagger等文档插件,全网首发,同时支持Json和Xml 核心工具类 Json2Utils.java package com.xxx.demo.common.util; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; im

  • Java为实体类动态添加属性的方法详解

    目录 添加依赖 代码 测试 可以给已有实体类动态的添加字段并返回新的实体对象,不影响原来的实体对象结构. 添加依赖 <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>commons

随机推荐