Archive for the ‘J2EE’ Category

org.hibernate.NonUniqueObjectException的原因与解决方法

使用hibernate更新对象时,出现如下错误: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:[com.fatkun.dao.hibernate.User#12] 原因 在同一个session内,如果已经有一个对象已经是持久化状态(load进来等),现在构造一个新的PO,和前一个持久化对象拥有相同的持久化标识(identifier),在update的时候,就会抛这个错误。 举个例子(伪代码): User user1 = session.load(1); User user2 = new User(); user2.setId(1);//此时ID和user1一样 user2.setUsername("fatkun"); session.update(user2);//这里会抛出错误 解决方法 1.不要重新new一个对象,使用load的对象对他进行更改值。 例如上面例子直接对user1操作,最后更新user1 2.如果是hibernate3以上,可以使用session.merge()方法 3.把session中同标识的对象移出(session.evict(user1)),使他成为脱管的状态,然后user2就可以update了。


JDK源码分析:java.lang.String

最近开始看JDK源码,不能太懒了~~注释非常详细(虽然是英文),而且部分代码也不算很复杂。先挑的简单的看看。。为了坚持下去,所以在博客写些记录,一是为了记忆,二是给自己一个坚持的理由~~哇咔咔,英文不算很好,那就对着中文API一起看吧。。 String结构 这个类结构很简单。。 /** The value is used for character storage. */ private final char value[];   /** The offset is the first index of the storage that is used. */ private final int offset;   /** The count is the number of characters in the String. */ private final int count; 用了一个char数组来存储字符,然后offset是偏移(这个我还搞不懂有啥用),count是String的长度。 注意到String类是final的,不可以被继承,而且private final [...]


SQL Server JDBC Driver 2.0编译失败

  Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file 这个错误是因为JDK的版本不对,请检查你的JDK版本。然后检查你的包是不是都用低版本JDK编译的。 如果你在使用JDK1.5的话,一定要使用sqljdbc.jar包,sqljdbc4.jar是在JDK1.6的环境下才能使用的。  


JFreeChart核心类库介绍

以下内容包括了如何调整XY轴数值间隔 原文来自:http://hi.baidu.com/baileyfu/blog/item/8e75b212b47fea54f819b808.html


JFreeChart使用方法(代码备忘)

以下文章介绍JFreeChart的使用方法。 文章来源:http://hi.baidu.com/baileyfu/blog/item/8e75b212b47fea54f819b808.html


hibernate事务管理

1. 介绍数据库事务、事务隔离级别、悲观锁、乐观锁等概念。 2.数据库ACID特征: Atomic(原子性):指整个数据库事务是不可分割的工作单元。 Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。 Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。 Durability(持久性):指的是只要事务成功结束,它对数据库所作的更新就必须永久保存下来。 3.数据库系统支持两种事务模式: 自动提交模式:每个SQL语句都是一个独立的事务,当数据库系统执行完一个SQL语句后,会自动提交事务。 手动提交模式:必须由数据库客户程序显示指定事务开始边界和结束边界。 4.MySQL中数据库表分为3种类型: INNODB、BDB和MyISAM,其中MyISAM不支持数据库事务。MySQL中create table 语句默认为MyISAM类型。 5.并发问题 对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题,这些并发问题可归纳为以下几类: A.第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。 B.脏读:一个事务读到另一个事务为提交的更新数据。 C.幻读:一个事务读到另一个事务已提交的新插入的数据。 D.不可重复读:一个事务读到另一个事务已提交的更新数据。 E.第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一个事务已提交的更新数据。 6.数据库系统四种事务隔离级别 A.Serializable(串行化):一个事务在执行过程中完全看不到其他事务对数据库所做的更新。 B.Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。 C.Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。 D.Read Uncommitted(读未提交数据):一个事务在执行过程中可以拷打其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。 隔离级别 脏读 不可 重复读 幻象读 第一类丢失更新 第二类丢失更新 READ UNCOMMITED 允许 允许 允许 不允许 允许 READ COMMITTED 不允许 允许 允许 不允许 允许 REPEATABLE READ 不允许 不允许 允许 不允许 [...]