随笔-57  评论-202  文章-17  trackbacks-0
  2005年7月26日
最近在弄swing,需要由JComponent生成BufferedImage,在CSDN上发现一个好例子。下面是范例:

Rectangle rect = comp.getBounds();
 BufferedImage bufImage 
= new BufferedImage(rect.width,
           rect.height,
           BufferedImage.TYPE_INT_RGB);
 Graphics g 
= bufImage.getGraphics();
 g.translate(
-rect.x, -rect.y);
 comp.paint(g);

这样,JComponent中的图像就保存到BufferedImage中了。
原文的链接:http://dev.csdn.net/article/13/13531.shtm
posted @ 2006-04-14 23:41 小米 阅读(1357) | 评论 (1)编辑 收藏
        好久没有写blog了,距离上次写几乎已经是半年前的事情了。 这半年发生了不少事情。首先换了家公司,进了家金融企业,每天要西装革履的,一开始还真是不习惯。 这里开发是用的spring框架,以后要多研究研究spring的东西了。
        第二件事就是和恋爱了三年的女友结婚了,从此两人长相厮守,不知道时间久了会不会审美疲劳。呵呵。
        第三件事就是在深圳买了自己的小房子,虽然是小小的两房,不过我们已经很知足了。 而且刚好是赶在房价大涨前买的,还算走了点运气。换到现在,都不知道去哪里买好了。
        在这里要向一些留言和发邮件给我的网友道歉,前段时间实在是太忙,没有空回复你们的信息和邮件。请原谅!
posted @ 2006-03-29 19:43 小米 阅读(763) | 评论 (0)编辑 收藏
      最近真是多事情忙,而且可能要忙到9月底。好久没有上来更新我的博客了,暂且发发牢骚。
posted @ 2005-08-10 17:32 小米 阅读(1173) | 评论 (1)编辑 收藏
      这一节是非常实用的一节,我在阅读此书的时候,一直在迷惑,究竟应该怎样管理Session呢?因为Session的管理是如此重要,类似于以前写程序对JDBC Connection的管理。看完此节后,终于找到了方法。
      在各种Session管理方案中,ThreadLocal模式得到了大量使用。ThreadLocal是Java中一种较为特殊的线程绑定机制。通过ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM为每个运行的线程,绑定了私有的本定实例存取空间,从而为多线程环境经常出现的并发访问问题提供了一种隔离机制。
      下面是Hibernate官方提供的一个ThreadLocal工具:


import net.sf.hibernate.
*;
import net.sf.hibernate.cfg.
*;
import org.apache.log4j.Logger;

/**
 * <p>Title: </p>
 *
 * <p>Description: Session的管理类</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author George Hill
 * @version 1.0
 
*/


public class HibernateUtil {

  
private static final Logger log = Logger.getLogger(HibernateUtil.class);

  
private static final SessionFactory sessionFactory;

  
/**
   * 初始化Hibernate配置
   
*/

  
static {
    
try {
      
// Create the SessionFactory
      sessionFactory = new Configuration().configure().buildSessionFactory();
    }
 catch (Throwable ex) {
      log.error(
"Initial SessionFactory creation failed.", ex);
      
throw new ExceptionInInitializerError(ex);
    }

  }


  
public static final ThreadLocal session = new ThreadLocal();

  
/**
   * 根据当前线程获取相应的Session
   * @return Session
   * @throws HibernateException
   
*/

  
public static Session currentSession() throws HibernateException {
    Session s 
= (Session) session.get();
    
// Open a new Session, if this Thread has none yet
    if (s == null{
      s 
= sessionFactory.openSession();
      session.
set(s);
    }

    
return s;
  }


  
/**
   * 返回Session给相应的线程
   * @throws HibernateException
   
*/

  
public static void closeSession() throws HibernateException {
    Session s 
= (Session) session.get();
    session.
set(null);
    
if (s != null)
      s.close();
  }


}


      针对WEB程序,还可以利用Servlet2.3的Filter机制,轻松实现线程生命周期内的Session管理。下面是一个通过Filter进行Session管理的典型案例:

public class PersistenceFilter implements Filter {
  
protected static ThreadLocal hibernateHolder = new ThreadLocal();

  
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    hibernateHolder.
set(getSession());
    
try {
      
      chain.doFilter(request, response);
      
    }
 finally {
      Session session 
= (Session) hibernateHolder.get();
      
if (session != null{
        hibernateHolder.
set(null);
        
try {
          session.close();
        }
 catch (HibernateException ex) {
          
throw new ServletException(ex);
        }

      }

    }

  }

  
}
posted @ 2005-07-29 19:43 小米 阅读(3926) | 评论 (1)编辑 收藏
      数据分页显示,是很多B/S系统会遇到的问题。现在大多数主流数据库都提供了数据部分读取机制,而对于某些没有提供相应机制的数据而言,Hibernate也通过其它途径实现了分页,如通过Scrollable ResultSet,如果JDBC不支持Scrollable ResultSet,Hibernate也会自动通过ResultSet的next方法进行记录定位。Hibernate的Criteria、Query等接口提供了一致的方法设定分页范围。下面是书中的例子:

Criteria criteria = session.createCriteria(TUser.class);
Criteria.add(Expression.eq(
"age""20"));
//从检索结果中获取第100条记录开始的20条记录
criteria.setFirstResult(100);
criteria.setFetchSize(
20);

      不过,我在测试的时候总是不能够正常工作,把setFetchSize方法换成setMaxResults方法才行。换成最新的mysql-connector-java-3.1.10-bin-g.jar驱动也是一样。
posted @ 2005-07-26 18:12 小米 阅读(5529) | 评论 (4)编辑 收藏