一年经验JAVA的工程师简单的SQL都不会:是Hibernate害人还是人害了Hibernate [问题点数:100分,结帖人zyhowe]

Bbs4
本版专家分:1649
结帖率 100%
Bbs7
本版专家分:11314
Blank
蓝花 2004年12月 Java大版内专家分月排行榜第三
Bbs1
本版专家分:23
Bbs3
本版专家分:571
Bbs6
本版专家分:7591
Bbs5
本版专家分:4083
Bbs2
本版专家分:315
Bbs2
本版专家分:315
Bbs6
本版专家分:9317
Blank
红花 2011年12月 C/C++大版内专家分月排行榜第一
2011年11月 C/C++大版内专家分月排行榜第一
2011年10月 C/C++大版内专家分月排行榜第一
2010年4月 C++ Builder大版内专家分月排行榜第一
2008年9月 C++ Builder大版内专家分月排行榜第一
2008年8月 C++ Builder大版内专家分月排行榜第一
2007年1月 C++ Builder大版内专家分月排行榜第一
2004年3月 C/C++大版内专家分月排行榜第一
2006年12月 C++ Builder大版内专家分月排行榜第一
Blank
黄花 2010年4月 Delphi大版内专家分月排行榜第二
2010年3月 C++ Builder大版内专家分月排行榜第二
2009年9月 C++ Builder大版内专家分月排行榜第二
2005年10月 Java大版内专家分月排行榜第二
2006年11月 C++ Builder大版内专家分月排行榜第二
2006年10月 C++ Builder大版内专家分月排行榜第二
2006年9月 C++ Builder大版内专家分月排行榜第二
2006年7月 C++ Builder大版内专家分月排行榜第二
2004年1月 C++ Builder大版内专家分月排行榜第二
2006年1月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2010年5月 C++ Builder大版内专家分月排行榜第三
2006年8月 C++ Builder大版内专家分月排行榜第三
2004年2月 C++ Builder大版内专家分月排行榜第三
2003年8月 C++ Builder大版内专家分月排行榜第三
2006年4月 Delphi大版内专家分月排行榜第三
2005年12月 Delphi大版内专家分月排行榜第三
Bbs3
本版专家分:932
Bbs3
本版专家分:699
Blank
蓝花 2001年5月 PowerBuilder大版内专家分月排行榜第三
Bbs7
本版专家分:13487
Blank
红花 2004年10月 Java大版内专家分月排行榜第一
Bbs7
本版专家分:13487
Blank
红花 2004年10月 Java大版内专家分月排行榜第一
Bbs5
本版专家分:4484
Bbs1
本版专家分:1
Bbs2
本版专家分:366
Bbs1
本版专家分:14
Bbs6
本版专家分:5790
Bbs2
本版专家分:228
Bbs1
本版专家分:18
Bbs1
本版专家分:3
Bbs3
本版专家分:955
Bbs2
本版专家分:394
Bbs2
本版专家分:315
Bbs3
本版专家分:888
Bbs5
本版专家分:2629
Bbs5
本版专家分:3827
Bbs2
本版专家分:417
Bbs2
本版专家分:315
Bbs2
本版专家分:213
Bbs2
本版专家分:228
Bbs7
本版专家分:12816
Blank
黄花 2006年4月 Java大版内专家分月排行榜第二
Bbs4
本版专家分:1351
Bbs1
本版专家分:3
Bbs1
本版专家分:1
Bbs5
本版专家分:2868
Bbs4
本版专家分:1372
Blank
红花 2006年3月 Oracle大版内专家分月排行榜第一
2006年2月 Oracle大版内专家分月排行榜第一
2006年1月 Oracle大版内专家分月排行榜第一
Blank
蓝花 2006年4月 Oracle大版内专家分月排行榜第三
Bbs2
本版专家分:102
Bbs2
本版专家分:142
Bbs4
本版专家分:1473
Bbs2
本版专家分:102
Bbs2
本版专家分:221
Bbs5
本版专家分:4139
Bbs1
本版专家分:33
Bbs4
本版专家分:1898
Hibernate之性能优化
本文主要包括以下内容性能优化的方法发出的<em>sql</em>语句越少,性能越高 方法: 1、懒加载 2、抓取策略 3、缓存策略 4、HQL语句 懒加载 类的懒加载 1、利用session.load方法可以产生代理对象 2、在session.load方法执行的时候并不发出<em>sql</em>语句 3、在得到其一般属性的时候发出<em>sql</em>语句
第一个简单hibernate小例子
一直在用mybatis.因为要写很多表的联合查询语句。 听很多人说起<em>hibernate</em>。说是封装的如何好之类。 于是想学习一下。 网上搜的例子在我这各种报错:log4j的,Configuring ehcache from ehcache-failsafe.xml 等。 最后费了老劲终于让程序走通-----<em>还是</em><em>hibernate</em> jar包的问题。 于是决定把做的程序呈现出来,最重要
Java之——注解详解和自定义注解(模拟实现Hibernate的注解生成SQL语句)
Java自定义注解的理论部分参见博文《Java之——注解详解和自定义注解(基于JDK实现<em>简单</em>的注解功能)》,我们直接进入主题1、实现Table注解package io.mykit.annotation.jdk.db.provider; import <em>java</em>.lang.annotation.Documented; import <em>java</em>.lang.annotation.ElementType; ...
Hibernate 先排序再分页问题
DB2为例<em>hibernate</em>分页排序<em>sql</em> ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC  排序失败 ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC,t.
利用hibernate实现基本sql函数功能
最近接触的项目,访问数据库<em>还是</em>用的<em>hibernate</em>,好久没有使用<em>hibernate</em>了,有些基本用法已经忘记。 现在记录一下<em>hibernate</em>实现基本<em>sql</em>函数的语句,方便以后查找。 ①创建Criteria,拼接查询条件 ②实现<em>sql</em>函数 例如: 1、除去重复项 distinct :criteria.setProjection(Projections.distinct(Projection...
Hibernate原生SQL查询
Hibernate除了支持HQL查询外,还支持原生SQL查询。          对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。该接口是Query接口的子接口。          执行SQL查询步骤如下:          1、获取Hibernate Session对象          2、编写SQL语句
java,hibernatesql server对应的数据类型
<em>java</em>,<em>hibernate</em>和<em>sql</em> server对应的数据类型   Java数据类型 Hibernate数据类型 标准SQL数据类型 (PS:对于不同的DB可能有所差异) byte、<em>java</em>.lang.Byte byte TINYINT short、<em>java</em>.lang.Short short SMALLINT i
Java 类型, Hibernate 映射类型及 SQL 类型之间的对应关系
-
hibernate实体类属性应该使用int还是Integer
我们知道,<em>hibernate</em>并没有强制要求pojo(实体类 )属性必须是基本数据类型或者是包装类,但是我们把属性声明为基本数据类型( primitive types directly)或者包装类 ( wrapping classes for primitives)对我们代码的编写有着深远的影响。   1,使用基本数据类型的好处 a),使用基本数据类型意味着你所定义的属性不允许为空,这样你在获
Hibernate的HQL语句、原生态SQL语句以及缓存
Hibernate是一个不需要编写增删改查的SQL语句的一个框架,这是由于她它本身自带一套CRUD的操作,但是它的基本CRUD并不能够满足我们所做的一些操作,从而衍生了一套名为HQL的查询语句。 HQL(Hibernate Query Language)查询提供了更丰富的和灵活的查询特性, 也因此Hibernate将HQL查询方式立为官方推荐的标准查询方式。 首先,我们创建一个实体类来进...
hibernatesql防止注入的问题
//对参数拼接<em>sql</em>的时候,//replaceAll("'","''")即可.即把单引号替换成双单引号 public List findDeviceUsers(final String devMac,final String serviceId){ return getHibernateTemplate().execute(new HibernateCallback>() {
想看Hibernate生成的SQL语句?
     近段时间工作中开始大面积使用<em>hibernate</em>了,在使用过程中难免有这样那样的问题,问题出来后怎么解决,当然首先是跟同事商量,毕竟这样的效率最高,若同事忙或别的什么原因,上网查有没有类似的问题,别人是怎么解决的, 不过有时这个也是不太方便的,虽说现在搜索这么发达,但在短时间内搜到一个不错解决方案也很不容易。 于是就逼着自己去想别的途径。      查看源码是个不错的选择。      当...
关于hibernatesql语句记录到Log4j日志中,并将其中的参数值导入到日志中
log4j.rootLogger = INFO, CONSOLE,infoFile,errFile log4j.appender.Threshold = INFO log4j.appender.DEBUG = org.apache.log4j.ConsoleAppender log4j.appender.DEBUG.Target = System.out log4j.appender.
javaEE Hibernate, 懒加载/延迟加载(类级别),session.load(),使用对象时才去执行sql查询
  Test.<em>java</em>(类级别的延迟加载session.load()): package cn.xxx.demo; import <em>java</em>.util.List; import org.<em>hibernate</em>.Criteria; import org.<em>hibernate</em>.Session; import org.<em>hibernate</em>.Transaction; import org.hibern...
hibernate简单理解
<em>hibernate</em>的<em>简单</em>理解
Hibernate— 投影查询
我们知道Hibernate框架是ORM(持久层)类型框架,所以有很多数据库优化方式,比如缓存等等,当我们只有查询出某个对象中的1,2个属性时,如果使用HQL的方式的查询,你将会是查询该对象的全部属性!这就代表着,你将会降低查询速度(浪费系统资源),Hibernate框架为此也给出了解决方案:"投影查询" 假设:映射实体对象为 User 具备属性:id,name,age,sex.....
java spring mvc 整合hibernate+自定义sql处理操作+数据库连接池
无聊到爆了。 今天整理了自己辛苦一天的学习成果。 spring mvc 整合<em>hibernate</em>+自定义<em>sql</em>处理操作+数据库连接池数据库连接池。 首先你得知道什么是数据库连接池。 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明
关于hibernate 更新后立即查询数据,取到的是更新之前的数据的问题
说明:这个是一个性能跟空间的选择问题, 用Hibernate处理大批数据时..都必须先执行5000次的update语句,然后才能更新5000个user 对象..  这样就影响到了操作上的性能....在项目当我们遇到性能与空间的问题时,,,个人觉得要以性能为主.. 解决方案:在每次查询之前加入session.clear(); 原因:<em>hibernate</em>在每次执行完update之后,
java面试题(一年工作经验)的心得
一、Java基础部分1、使用length属性获取数组长度,public、private、protected、friendly区别2、Collection和Collections区别3、String s=new String(‘xyz’);创建了几个object对象4、short s1;s1=s1+1;是否有错?5、Overriding和Overloading区别6、Set里面的元素不能重复,用什么...
Hibernate 中SQL查询结果集转变成JavaBean的方法
在使用到Hibernate的应用中,不只是进行单表查询,很多时候的查询条件会关联到多张表,同时结果集也不是所有表中的全部属性,而是根据需要进行部分查询。对此Hibernate提供了对应的解决办法 1,使用ResultTransformer      Hibernate的addScare()方法可以明确指定属性或者返回值的类型,如: session.createSQLQuery("SELECT
监控Hibernate执行SQL
 几乎 80% - 85% 的数据库性能问题是由于应用数据库的设计或者应用程序本身的代码所引起的。因此良好的事务处理能力需要在设计应用程序的时候,在设计数据库的时候就考虑到性能和伸缩性。          在我们使用Java EE开发企业级应用程序的过程中,总会涉及到系统的性能问题,并且都会与数据库进行打交道。当我们碰到数据库性能优化时,最有效的就是直接跟踪SQL 语句的执行情况,
hibernatesql查询出来封装实体的两种方式
1.在用<em>hibernate</em>的查询数据库时,即可以用hql,也可以用<em>sql</em>语句至于用hql语句查出来的结果可以是一个实体对象 如: public List getAll() { String <em>sql</em> = "from CraGovernment as o"; Query query = sessionFactory.getCurrentSession().createQuery(<em>sql</em>)
JPA和Hibernate关系之浅谈
首先我们来看一下百度百科关于JPA的解释,JPA全称Java Persistence API。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:ORM映射元数据,API,查询语言。由此可知,Jpa是一种规范,而Hiberna
hibernate项目的HQL(SQL区别、Select语句、返回list、map、object数组与单个对象)笔记整理
<em>hibernate</em>项目的HQL(SQL区别、Select语句、返回list、map、object数组与单个对象)笔记整理
Hibernate学习笔记(二)——创建一个简单的Hibernate项目
首先来看看Hibernate开发的一个<em>简单</em>流程: (1)准备开发环境,创建Hibernate项目。 (2)在数据库中创建数据表。 (3)创建持久化类。 (4)设计映射文件,使用Hibernate映射文件将POJO对象映射到数据库。 (5)创建Hibernate的配置文件Hibernate.cfg.xml。 (6)编写辅助工具类HibernateUtil类,用来实现对HIbernate的初始化并提供获得Session的方法,此步可根据情况取舍。 (7)编写DAO层类。 (8)编写Service层类。 (9)编
hibernate hql语句in的使用和占位符
平时经常用Hibernate,由于习惯表间不建立关联,所以HQL查询时候经常要用in语句。     我最常用的情况有2种:    1、in后是个子查询,如 FROM A WHERE A.ID IN (SELECT B.AID FROM B WHERE ...),这样是没问题的,如果A.ID 和B.AID是相同的数据类型。    2、in的参数如果已知了,可以直接拼接在后面 如FR
hibernate的模糊查询和sql查询
<em>hibernate</em>我学到一半就没学了,于是在代码中闹出这样的笑话,看到人间写的代码中写的是: Query query=session.createQuery(hql); hql="from user"; 然后使用query.list()[得到一个对象的list集合] 和query.uniqueResult()【得到一个对象】 我有点莫名,怎么不加select呢?原来这是<em>hibernate</em>是这样的:
Hibernate——VO对象与PO对象的区别
PO : persistant object定义   PO(persistant object) 持久对象,通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的<em>java</em>对象。最<em>简单</em>的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。使用Hibernate来生成PO是不错的选择。 VO:value object
使用Hibernate 操作原生sql语句建表
/*   * 按天建表 appVisit20130313 添加应用的访问详细情况 appVisitDate 当前时间 appVisit   * AppVisitBean实体   */   public void addAppVisit(String appVisitDate) {       Connection conn = null;       String tableName 
Spring、Struts、Hibernate框架之间的关系是什么以及怎么处理
Spring、Struts、Hibernate框架之间的关系是什么以及怎么处理
hibernate里实体类用int和Integer区别
1、返回数据库字段值是null的话,int类型会报错。int是基本数据类型,其声明的是变量,而null则是对象。所以<em>hibernate</em>实体建议用integer; 2、通过jdbc将实体存储到数据库的操作通过<em>sql</em>语句,基本数据类型可以直接存储,对象需要序列化存储。 3、在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Sessi
Hibernate一些防止SQL注入的方式
Hibernate一些防止SQL注入的方式   Hibernate在操作数据库的时候,有以下几种方法来防止SQL注入     1.对参数名称进行绑定:     2.对参数位置进行邦定:     3.setParameter()方法:     4.setProperties()方法:     5.HQL拼接方法,这种方式是最常用,而且容易忽视且容易被注入的,通常做
Hibernate查询条件封装对象Expression介绍
Criteria Query是Hibernate提供的将SQL语句对象化表示的一种方法。当我们使用JDBC方式查询数据时会这样写: select NAME FROM EMPLOYEE where ID = '001' 使用Hibernate的Criteria Query方式查询时,就可以使用我们已经习惯了的面向对象的方式。如下:    程序代码 import net.sf.<em>hibernate</em>.C...
hibernatesql查询结果集映射为DTO(VO,DO)
假设我们现在有一个DTO,其属性包括两张表的属性,我们现在需要将<em>sql</em>语句查询得到的内容转为一个DTO对象,其解决方法如下: String <em>sql</em> = "select u.userName as userName ,p.title as title ,p.addTime as addTime from user as u,post as p where u.id=p.userId"   Que
hibernate和数据库中出现乱码解决
<em>hibernate</em>和数据库中出现乱码解决 1.下面请看第一种乱码:   数据库中乱码 2.下面请看第二种乱码:   页面乱码 3.第三种乱码:数据库中是: 一般就是页面或数据中出现乱码: 下面是解决方式: 1.所有的请求与响应页面都要加编码格式转换:request.setCharacterEncoding("gbk"); 2.所有的页面都加上格式编
hibernate多对多,多对一映射时用set,bag,list,array时有什么区别?
<em>简单</em>的说,这些集合类除了bag,都有其对应的JDK中接口的语义。它们都可以表示一对多或多对多。 Set对应于<em>java</em>.util.Set接口,表示一个没有重复元素的集合。 怎样区别重复元素?这就涉及到对象的同一性。我们知道在数据库中,我们用主键来区分每一条记录,在Java的对象世界中,我们是用Object.equals()方法来区分是否是等价的对象。 set保证,在这个集合中,没有重复的对象。
hibernatesql语句以及hql语句增删改查
写一个关于<em>hibernate</em>的<em>sql</em>和hql语句实现增删改查,**注意:**<em>hibernate</em>的hql语句是不能实现insert的,所以和我一样有强迫症的一定要把这两者写在一起比较的不要纠结了。 至于原因:因为Hibernate的HQL语言是用于面向对象实现查询功能的,然而在插入操作中是不会牵涉任何查询动作的,所以HQL不能用于insert语句的插入操作。实体类我就不上传了,就涉及两个,Categ
java】——Hibernate代码创建表
小编最近正在进行Hibernate框架的学习,根据代码建立数据库表实现了一个小例子,跟读者朋友进行分享。
1年2年工作经验java面试题精炼汇总
2年左右工作<em>经验</em>的面试题,希望对你有帮助,算是精品吧,祝大家找到个好工作
hibernate对象状态与一级缓存二级缓存
1 <em>hibernate</em> 中 持久类对象状态介绍 1.1<em>hibernate</em> 规定三种状态:瞬时态、持久态、脱管态      瞬时态:transient,     session没有缓存对象,数据库也没有对应记录。         OID特点:没有值     持久态:persistent,   session缓存对象,数据库最终会有记录。(事务没有提交)         OID特点:有值    ...
hibernate动态生成SQL
因为以前一直用的IBATIS,现在这个项目用的HIERNATE,不能写动态SQL,写一堆的IF/ELSE很不习惯,而且代码看 着特别不爽,于是打算自己封装。网上查了下,刚好有人写了这方面的文章,正好拿来用,文章地址。这个文章没有 把全部的代码贴出来,而且看到下面评论好多人在要,在此把代码放出来共享。
hibernate一对多和多对一的整理:《例》部门与员工
每次遇到这种表与表间的关系时,脑子里就是一团乱麻,这回又用<em>hibernate</em>框架时,我就只知道单表映射生成文件,涉及到关系就懵逼了,而且表间关系又是重点,就不得不又拿起来啃啃看:         <em>hibernate</em>框架的总配置文件中涉及到的都是初始化的东西,也就是                              1,configuration对象的相关初始化(数据库连接参数操作《数据
hibernate 中 对数据库中datetime类型的处理
<em>hibernate</em>中对 数据库中datetime类型的处理(假设该字段为 birthdate)             1.如果想插入数据库中的格式为 yyyy-mm-dd hh:mm:ss形式的话             在.hbm.xml文件中将 birthdate定义为                                  name="birthdate"      
Hibernate 处理查询 in 字句
在处理Hibernate的实体查询,一般可以采用多种方式处理复杂的查询,必然要
Hibernate_根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
via: http://blog.csdn.net/crazycoder2010/article/details/7414152   1.功能需求背景  项目中使用<em>hibernate</em>作为数据持久层框架,主要考虑<em>hibernate</em>在进行一些<em>简单</em>的crud操作时非常便利,不需要和ibatis似的为每个<em>sql</em>操作都写一堆文件,但是同时也带来了一些局限性,如类似ibatis强大的动态查询功能用不了了,
使用hibernate拦截sql语句并输出获取sql语句
使用Hibernate 拦截执行<em>sql</em>语句,并输出<em>sql</em>语句,获取<em>sql</em>语句 重建包名 org.<em>hibernate</em>.type.descriptor.<em>sql</em> 重建类BasicBinder  代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14
简易hibernate搭建,纯java项目
<em>hibernate</em> <em>简单</em>搭建步骤
java中批量插入数据jdbc hibernate Mybatis使用方式
1.jdbc方式中使用executeBatch实现 JDBC中在做数据插入、更新、删除操作,可以使用executeBatch()方法减少数据库调用次数,如: [<em>java</em>] view plain copy Statement pstmt = conn.createStatement();       pstmt.addBatch("inse
java web 项目log 配置 (将log 和hibernate的hql/sql 信息打印到控制台和日志文件中)
log4j 配置 将log日志和<em>sql</em>/hql语句输出到文件
hibernate sql查询返回对象list
public Pagination findPaginationObjBySql(final String <em>sql</em>, final int pageIndex, final int pageSize, final Class beanClass) { return (Pagination) <em>hibernate</em>Template.execute(new HibernateCallbac
菜鸟学习Hibernate——简单的一个例子
一、Hibernate开发。 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类。 为了能够使用Hibernate快速上手,我们先讲解一个<em>简单</em>的Hibernate应用实例<em>hibernate</em>_first。 二、开发流程。 1.首先在MyEclipce中新建一个<em>hibernate</em>_first的项目,然后新建后的项目目录为: 2.配置Hibernate环境。 3.编写持久
Hibernate的批量插入(&&JDBC)
一、批量插入(两种方式) 1,通过Hibernate缓存 如果这样写代码进行批量插入(初始设想): package com.anlw.util; import org.<em>hibernate</em>.Session; import org.<em>hibernate</em>.SessionFactory; import org.<em>hibernate</em>.Transaction; import org.<em>hibernate</em>.b
Hibernate中使用sql查询结果后再封装成实体类的问题
在使用<em>hibernate</em>的时候, 有时需要做一些联表查询, 而有时候需要查询的表在实体中并未做映射关系, 此时使用h<em>sql</em>语句就不太好使了, 就需要用到<em>sql</em> 了, 但是<em>sql</em>查出的结果是Object[] 类型的list, 要封装成实体类的话, 可以用 addEntity 场景一 String <em>sql</em> = select a.*, b.* from A a left join B
让Hibernate输出SQL语句参数配置
在J2ee应用中,如果采用Hibernate框架,可以自动建立数据库实体与Java实体类的映射关系,大大方便Java程序进行持久化对象访问和操作,从而明显提高企业应用开发效率,减轻Java程序与后台数据库的依赖性。 但 是,有时候如果操作不慎,可能造成映射关系不完整(特别是存在外键链接的时候),造成访问数据库对象时程序有Bug。这时,可以通过参数配置,让 Hibernate在每次需要从数据库
Hibernate生成sql语句中列名问题
今天遇到一个Hibernate问题,在程序中的hbm.xml映射文件中数据库表的列名是首字母大写(如:ProductUrl),数据库中也是首字母大写(如:ProductUrl),但是Hibernate生成的<em>sql</em>语句中自动把第二个单词的大写字母变成了下划线加小写(如:product_url),最终报错:product_url在数据库表中找不到。Google上搜了很久没找到原因,偶然一下发现一篇文章
文章热词 Python工程师学习路线 Java Python工程师算法教程 Python工程师数据结构 Python工程师入门基础
相关热词 c++工程师和java工程师 new 是java还是c++ c#招一年招不到人 java工程师转android 培训java还是python 学习java还是python
我们是很有底线的