I suspect it's needing to repaint because the sprite (arrow, cursor) passing over your component is causing little bits to need refreshing.
With my UI that is mostly a huge JTree, I implemented a feature whereby the nodes' toString returns a cached value rather than building the
string over and over uneccesarily. You might consider doing the same, to eliminate all those database calls ...
just a thought,
Eric.