首页 > 其他分享 >2013年工作中遇到的20个问题:1-20

2013年工作中遇到的20个问题:1-20

时间:2023-02-14 15:06:35浏览次数:51  
标签:Hibernate 20 遇到 int list Session Integer public 2013



1. 列不允许有NULL值,INSERT失败。

原因:数据库的表 没有设置主键!(遇到至少2次)

客户的数据库是由客户自己去维护的!

2. 项目重构后Flex端卡死了。
原因:Hibernate底层 获得Session使用 openSession方法,导致Spring不再管理Session,而我们又没有手动关闭session。

合适的使用方式:在Spring中,使用Hibernate的getCurrentSession,session由Spring自动关闭。

3. Hibernate HQL语句找不到对象,提示“对象名mdpDefine无效”。
原因:数据库表被 误删除了!

4. Hibernate createSQLQuery()
以前在使用原生SQL查询时,都会加上addEntity(在最初学习的时候,书上的例子加上了.addEntity)。
而项目中有的地方没有加入,此时 List<MyObject> list = query.list()会报错。

如果不加入addEntity,Hibernate不能解析select语句中的属性。

List<Object[]> list = query.list();

5.Spring中获取 BeanFactory,有些地方需要 获取 注入的对象。
比如工具类中,而工具类又不能实例化,进而不能注入对象。

@Service//这个注解不可少
public class SpringBeanUtils implements BeanFactoryAware{

private static BeanFactory beanFactory;

public void setBeanFactory(BeanFactory beanFactory){
SpringBeanUtils.beanFactory=beanFactory;
}

public static Object getBean(String beanName){
beanFactory.getBean(beanName);
}

}

public class Test{
public void myMethod(){
KeywordServie keywordService = (KeywordService)SpringBeanUtils.getBean("keywordService");
}
}

6. Integer与int不同。(2个Comment类,1个是 int,1个是Integer)
知道Integer应该调用equals,但是 有的是 int,有的Integer,多了 你还能知道么??
==与equals是不同的
这个地方还有个“秘密”。Integer(-127到128)用 == 比较也是true,因为使用了JDK对这些Integer对象进行了缓存。

7. 引用理解错误!又一次!

List a = new ArrayList<>
//现在要对a进行排序并且不能直接对a进行排序

sort(a){//参数传递过程中,有个赋值过程
List b;//已经排序完成
a = b;
//这个时候a已经有序
}

//这个时候a仍然无序

应该通过 函数返回值的方式 来修改。

8.健壮性

程序中 有太多的地方都需要使用 Null判断。
判读过多,程序很复杂?
判断过少,容易出问题??
if(a != null){

}

9. 硬编码

ResultData.status = 1

最好用枚举类型或常量表示!!!

10.使用FindBugs 可以发现简单的Bug!

11. if-else和swtich不合法情况打印错误日志。

Anychart = null;
if( 1){
...
}else if(2){
...
}else{
LOG.ERROR("Error:函数调用存在错误!参数不正确!");
}

anyachart.invokeMethod();

switch语句类似。

12. Hibernate--Dao 存在大量重复代码--可以优化。 Web开发中,DAO层的很多功能是常见且类似的,建立BaseDao,重用代码。

13. Hibernate sql语句,硬编码

String hql = "select new com.supertool.ProjectUserVO()";

包名一旦发生变化,就会产生若干错误!

大量硬编码的代码 非常难维护!一处改动,处处修改!

14. 调试代码 未及时删除!!!

15. 一个线程下,多个子线程,数据互相干扰! 1个Service下,开了多个线程 去数据库取数据!!!

16. for循环下标问题(一错再错!)

List p;

removeIllegalProject(p){
int size = p.size();
for(int index=0;index<size;index++){
//执行操作
if(Illegal(p)){
//如果不合法,删除这个元素
p.remove(index);

// 这个时候 size就比当前的p.size()要大了
}
}

}

######################################################
for(int index=0;index<p.size();index++){---不再正确,因为index也发生了变化}
######################################################
//多分配了一点内存
//新建一个List list; 非常正确
把合法的加进去 list.add();p = list;
######################################################
for(Iterator iterator =p.iterator();iterator.next();){
if(){
iterator.remove();
}
}

根据索引删除,根据对象删除!!!

突然发现 for alt+/ 出现了快速生成代码功能(Eclipse)

(Alt+H 搜索资源,Ctrl+shift+R打开资源文件,for循环代码快速生成)----通过 富有经验的程序员 学来!!!

这些地方 有必要 去主动学习和使用下,提高效率啊!开发利器哈!

17. js定义了一个数组,var chars = {'a','b', ,'c'}; 中间多了一个 逗号,导致 去数据时 出现 undefined。

18. 数据库字符串区分大小写。

有可能区分,有可能不区分,不同的数据库可能不一样。

19. setParameter,setParameterList
sql语句使用 in语句时,需要调用setParameterList而不是setParameter。

20. 静态Session有问题

static Session session = FlexContect.getSession();

public Session getFlexSession(){
return session;
}

Session不应该定义为静态的。

相关阅读

工作问题


标签:Hibernate,20,遇到,int,list,Session,Integer,public,2013
From: https://blog.51cto.com/fansunion/6056848

相关文章

  • 2012年工作中遇到的20个问题
    2012年工作中遇到了很多问题,刚刚开始时,遇到的问题没有及时记载下来,挺可惜的。1.构造SQL语句--简化构造select*fromuserwhere1=1;if(name!=null){andname="fa......
  • 2012总结--第10篇--工作篇
    3月到5月实习期间,完成了A项目的一个模块。更多信息,请参见实习期间遇到的5大问题及解决方案。好几次比较激动,最不淡定的一段工作。6月毕业到正式入职期间,看书,写代码,看......
  • [2012最后的力作] PC:亲爱的主人,我想退休了
    亲爱的主人:我想退休了!2012年以来,我感到身体很不适。坚持了将近1年,实在是扛不住了。还记得3年前的2009年7月,主人您把我从武汉广埠屯买回来的时候,我当时特高兴。主人您......
  • 2012总结--第1篇--技术篇
    以广度与深度并重为核心指南!1.语言1.1深入学习Java。1.2复习C++,Linux系统下写了几个小程序。大致阅读了一遍《C++Primer》。1.3了解了Python,在Windows平台写了......
  • 2012总结--第9篇--价值观篇
    自己也不小了,转眼间1/3左右的人生已经过去。是该给自己立点规矩,适度地约束自己的言行举止了。无论自己是迷茫时,或是得意时,都能有所选择!1.责任努力奋斗,自立自强!1.1父......
  • 2012总结--第5篇--人脉篇
    综述今年新结识了很多人,友好交往的人还比较多。感觉最缺少的,就是和自己向一个方向走的IT相关的人士。公司很多人也都挺熟悉的,总感觉缺少了一点什么。高中的很多同学,有种......
  • 3620、反转链表
    给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[]提......
  • 2023年使用centos发报警邮件配置
    环境:阿里云上ecs主机  centos7.6系统目的:监控nginx有访问异常ip,发送邮件通知安装软件:  yuminstall-ysendmailmailx  #mailx一般阿里云上都给安装了的......
  • WC2023(授课与讨论6)
    Fliper(3)将每个挡板拆成两个点(表示两面)并建图,即可求出所有环建立一张新图,以每个环作为点,并额外建立一个点\(z\)表示不在环中将每个挡板两点所在环连边,即对边染色使(除\(......
  • 倒带ChunJun,同心前行|2022年度回顾&2023年共建规划
    ChunJun是一个开始于2018年的批流一体数据集成框架项目,原名FlinkX。2022年2月22日,在FlinkX进行初版开源的整整四年后,技术团队决定对FlinkX进行整体升级,并更名为ChunJun,希望......