在一个B/S结构的系统中(struts+hibernate+mysql+tomcat),现在有一个文件管理需求:
1.客户端选择一个文件上传至服务器后,服务器端需要将上传的文件保存至磁盘指定的目录下,并且将文件信息保存至数据库中(包括上传时间,上传者,文件存放路径等等一些信息).
2.下载时服务器端是根据数据库中文件存放路径得到文件下载到客户端.
这样一个文件对象的持久化好象对应了数据库的持久和磁盘空间上的持久.这么这两种持久操作是否应该分别放在两个类中,一个是对数据库的持久,一个是在磁盘上的持久操作.还是两两种操作放在一个类中.
现在我的类是这样的.
public class FileInfo
{
private Integer id;
private String location;
private Date uploadDate;
...getter,setter operate...
}
public class FileInfoDAO
{
public FileInfo getFileInfoById(Integer id)
{
...
}
...
}
public class FileInfoService
{
public FileInfo getFileInfoById(Integer id)
{
...
}
public InputStream getFile(FileInfo fileInfo)
{
String fileName = FileIinfo.getLocation;
...
}
...
}
现在我感觉把获得文件流操作放在FileInfoService中有点怪怪的,是否把对数据流的操作放到FileIinfo中,然后在FileInfoService中取得FileInfo,通过FileIinfo的getFile(FileInfo fileInfo)操作获得数据流.
头大了。