java如何保存聊天记录?

在写一个javaweb程序的聊天模块碰到一个问题。
聊天中双方的聊天记录如何保存呢?
之前做过类似bbs留言一样的功能,由于留言或者私信量少,留一条就往数据库里存一条也没觉得不妥;可聊天如何存聊天记录呢,总不能全存数据库吧!
以文本日志的方式存记录也感觉不好,记录存到客户端还可以类似qq记录那样每两个用户之间的会话记录成一个文件,可我的目的是把聊天记录存放到服务端,这样的话每两个不同用户间的会话就存一个文件也太多了。
可用文件保存的话,如果用户当前不在线给他发的消息如何记录已读未读,从而方便下次登录的时候把消息推送给他呢?
希望有这方便经验的道友不吝赐教,感激不尽!

个人观点:
聊天记录存储到库中,至于存多少,记录生命期是多少,什么时候删除等系统设计上考虑下!
如何记录已读未读,这是状态问题!一般CS是双向通信的,而BS可使用轮询模拟双向通信,或者直接使用websocket进行通信,当web端读取到信息时应答服务器。

这个你真可以参考一下腾讯qq的做法,因为qq面向的用户众多,所以他是如果是qq会员的话就会把聊天记录以一个xml文件的形式保存在服务器中,
而普通用户是只存在客户端的。所以你要结合你现在做的聊天应用的用户数而做出合适的选择,如果不是太多的话,全部以文件的形式保存在服务器
也占用不了多少空间,而且你也可以比如做个定时更新,定时清除1个月或3个月以前的聊天记录,这样也可以达到减轻服务器压力。

用jsp的application+数据库 进行用户信息交互比较合理