课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > java培训老师聊聊JavaSE --如何理解Java Bean
  • java培训老师聊聊JavaSE --如何理解Java Bean

    发布:昆明Java培训      来源:剽悍一小兔      时间:2016-09-23

  • 首先,在开始本章之前,昆明Java培训班的小编先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是.class的文件。这就是Java Bean,很多初学者,包括当年的小编,总是被这些专有名词搞的晕头转向。去 公司面试,对方一口一个controller,一口一个service,dao,搞得小编我很紧张。其实都是很简单的东西,只是自己当时不知道罢了,接触之后才发现,不就是Java类吗?

    1.什么是Java Bean?

    很多学生初学java基础的时候,基本都会写这样的代码:

    package com.springmvc.bean;

    public class Person {

    private String name; //姓名

    private Integer age; //年龄

    private String gender;//性别

    private String hobby;//爱好

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public Integer getAge() {

    return age;

    }

    public void setAge(Integer age) {

    this.age = age;

    }

    public String getGender() {

    return gender;

    }

    public void setGender(String gender) {

    this.gender = gender;

    }

    public String getHobby() {

    return hobby;

    }

    public void setHobby(String hobby) {

    this.hobby = hobby;

    }

    }

    毋庸置疑,这就是一个java bean。

    在很多教材上,我们都被告知,现实中有人,分为男人和女人,这是一个类。然后,我们用java的面向对象将人抽象成一个Java类——Person类。

    这固然不错,然而,也就只是如此而已了。没有什么其他的东西,弄了半天,我们自学者学java,都在那写人类,车子类,房子类,等等。学继承的时候,总是写这样的代码,自己也举类似这样的例子。

    package com.springmvc.bean;

    /**

    *水果类

    *

    */

    public class Fruit {

    private String name; //水果的名称

    private Float price;//价格

    public Fruit(String name, Float price) {

    super();

    this.name = name;

    this.price = price;

    }

    // getters 和setters省略

    }

    package com.springmvc.bean;

    /**

    *苹果类

    */

    public class Apple extends Fruit {

    private String color;//颜色

    public Apple(String name, Float price,String color) {

    super(name, price);

    this.color = color;

    }

    // getters 和setters省略

    }

    没错,这些都是Java Bean,对于初学者,这些例子的确比较好理解。但是,这样就有个弊端,它很容易让人产生一种迷茫,就是说,这些例子我固然听得懂,但是,我不知道学这些有什么用?昆明Java培训班的小编接触过很多自学 学生,发现大家多半都是这么讲的,这导致很多学生自己把整个JavaSE都学完了,还是很迷茫的不知道自己能干嘛。

    然后去企业面试,人家一口一个专业词汇,弄得自己好不尴尬。

    好吧,说多了都是泪。

    2.需求分析

    昆明Java培训班的小编举个例子咯,就拿简书来说好了,比如一个文章列表:

    每一条数据,说实话,就是一个对象,对象有各种属性,从图片中,我们起码就可以获得这些信息:

    一篇文章具备的属性:

    1.发布时间

    2.文章标题

    3.点击量

    4.评论数

    5.点赞数

    6.显示图片

    当然,还需要有文章内容,这些属性,不就是Java类里面修饰符为private的私有属性吗?对应数据库表里面,这些就是所谓的字段。

    你可能会说,对啊,可是我为什么要专门去写一个JavaBean来承载这些数据呢?我用一个HashMap不是也一样吗?

    是的,从某种程度上,的确可以,可是,用JavaBean的话更加清晰明了。

    你可能写了很久的代码,都不清楚到底为什么要定义JavaBean,尤其是做JavaWeb开发的时候,Java的作用其实就是两句话:

    1.1控制数据的流向,将前台传过来的数据包起来,然后一个一个地插入数据库永久保存。

    1.2从数据库中用jdbc取出数据,然后包起来,最终传递到前台页面进行公开展览

    JavaBean就是一个中转载体。

    不就是这么回事吗?这就是所谓的增删改查。

    最多就是,我们根据业务需求,通过写Java代码,来进行一些逻辑的控制,说穿了就是:

    数据不是你想增,想增就能增。

    数据不是你想删,想删就能删。

    数据不是你想改,想改就能改。

    数据不是你想查,想查就能查。

    查个权限,做个判断,放手你的爱。

    不就是这么回事吗?

    什么JavaBean,dao,事务管理,切面,这些我认为反而是次要的,都是一些专业术语的堆积,昆明Java培训班的小编认为首先得知道,自己每天到底在干嘛,然后根据需要再去学对应的知识或者理论来给自己充电。

    好了,回到正题,刚才获取了这么多字段:

    1.发布时间

    2.文章标题

    3.点击量

    4.评论数

    5.点赞数

    6.显示图片

    其实可以分为必要字段和辅助字段。所谓的必要字段,就是作为一篇文章,必须要有的属性。

    像发布时间,文章标题,还有文章内容,这些都是必要字段。

    辅助字段就是,为了方便对这篇文章进行控制,需要设置的字段。比如,

    这篇文章是否能够被看到?

    这篇文章是否已经删除?

    这篇文章是否应该被排在前面?

    对应的,我们可以设置这些字段,

    1.是否发布: 0未发布1发布

    2.是否删除: 0未删除1已删除

    3.点击量,评论数,点赞数这些字段可用于生成一个热度,如果热度很高,那么就应该被排在前面,被更多的人看到。(这些字段看做主要字段也可以)

    顺便提一句,实际开发的时候,基本用不到delete语句的,删除都是用的逻辑删除,就是说,将某一个字段(is_delete)从0变为1,表示已删除。这样的好处就是,万一这条数据以后想恢复的话,直接改变那个字段的值就OK了。我查 数据的时候,在where条件里面加一个is_delete = 1不就好了,那么删除的数据就不会被查出来了。

    为什么要这么做呢?

    比如,游戏中物品丢失了,怎么找回呢?如果直接delete掉了,那么就真的GG了。只要数据还在,一切都好说,我大不了不让它显示就是了,万一要找回就能直接找回了。

    3. JavaBean设计

    接下来,我们来设计这个JavaBean。打开Eclipse,我以之前那个springmvc的案例来举例,现在新建一个包,就叫做bean,里面是专门用来存放这些JavaBean的,然后新建一个类——Article(文章类)

    public class Article {

    }

    开始设计字段。

    首先,我们知道,这些数据最终是要存储到数据库表的,那么就肯定需要有一个id,作为它的主键,我们就用String吧,然后用uuid主键生成策略。

    private String id; //主键UUID

    主键就是这一条数据的身份证,是唯一的,不允许重复。

    必要字段,或者叫主要字段

    private Date publishTime;  //发布时间

    private String title;      //文章标题

    private String pictureLine; //图片链接地址

    辅助字段:

    private Integer hitNum;    //点击量

    private Integer commentNum; //评论数

    private Integer loveNum;   //点赞数

    private Integer isPublished; //是否发布0未发布1发布

    private Integer isDelete;    //是否删除  0未删除1已删除

    最后,一般来说,我们还需要记录一些类似于日志的信息,比如这篇文章是什么时候创建的,这个创建的时间是不是可以记录下来呢?另外,是谁创建的,我们是不是可以记录下用户的id呢?还有,文章是可以被多次修改的,那 么,最后一次修改的时间是不是需要被记录下来呢?

    昆明Java培训班的小编在给大家举一个JavaBean的设计的例子

    private String userId; //用户ID

    private Date createTime;//创建时间

    private Date updateTime;//最后更新时间

    这样一来就差不多了,最后,利用Eclipse的快捷键alt + s,点击Generate Getters and Setters...,选择全部字段,再点击OK。

    最后,鼠标右键,Source——Format,格式化一下,一个JavaBean就做好了。

    当你写完了JavaBean,差不多也就相当于设计好了数据库表。我们在写JavaBean的时候,属性一般都用驼峰法来命名,而数据库表有点不一样,就是在驼峰的地方,大写字母要改为小写字母,然后加上一个下划线。

    比如

    userId,对应的数据库表字段名称就是user_id,一般都是这么命名的。

    在实际开发过程中,差不多就是这样:

    前台页面(可能是在一张表单Form里面填写数据)——保存——ajax传递到Controller层——与JavaBean做映射,将这些数据保存到JavaBean中——进入Service层,这里对数据进行一些逻辑操作和判断。

    ——最后,进入Dao层,直接访问数据库,进行各种操作。

    这一节对JavaBean做了一些简短的介绍。下一节昆明Java培训班的小编会稍微深入一些。总之,初学Java的时候,千万不要被这些专业术语给吓到,它真的没你想的那么难。

    如果你总是想着复杂,那么你永远看不到简单。直到有一天你发现,所有的麻烦都只在你的心中。

    推荐文章

上一篇:Java事务处理总结

下一篇:java程序员:Java获取本机的IP与MAC地址

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56