怎么处理Hibernate里的date类型?

BigBird2012 2010-03-01 07:45:46
不是我不会处理,而是师傅说了“如果害怕出错的话,可以将除了主键Id之外的所有字段设为String类型,包括Date类型”,但我觉得这样不妥,请大家谈谈自己的看法吧!
...全文
602 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifei2199 2012-05-11
  • 打赏
  • 举报
回复
我怎么用hibernate不能删除date类型啊
海棠无香1998 2010-03-02
  • 打赏
  • 举报
回复
我之前的做法是,数据库的字段还是为Date类型,
Hibernate中,主要将Pojo中的对象和映射文件中的Date类型都改为String类型。
BearKin 2010-03-02
  • 打赏
  • 举报
回复
对了 多用时间戳 少用Date
BearKin 2010-03-02
  • 打赏
  • 举报
回复
引用 19 楼 leavin521 的回复:
为什么给 某个字段的get方法加上 @Temporal(TemporalType.TIMESTAMP) 这个注解后,在
@Column(name = "xxx_DATE", nullable = false, length = 7)指定他的长度为7 就没有用了呢


没有用是啥意思?...
leavin521 2010-03-02
  • 打赏
  • 举报
回复
为什么给 某个字段的get方法加上 @Temporal(TemporalType.TIMESTAMP) 这个注解后,在
@Column(name = "xxx_DATE", nullable = false, length = 7)指定他的长度为7 就没有用了呢
Dazzlingwinter 2010-03-02
  • 打赏
  • 举报
回复
实体类中的日期用的java.util.Date,在实体类的映射文件里边这么写class=java.util.Date,
oracle是自己的Date类型,长度默认为7
孤独剑客 2010-03-02
  • 打赏
  • 举报
回复
自己做一个类型转换器,

public class DateConverter implements Converter {

public Object convert (Class type, Object value) {
if (value == null) {
return value;
}
if (value instanceof java.util.Date) {
return value;
}
if (value instanceof String) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse((String)value);
return d;
}
}

//注册转换器
public void init() {
ConvertUtils.register(new DateConverter(), java.util.Date.class);
}
}
lp19890601 2010-03-02
  • 打赏
  • 举报
回复
引用 15 楼 wx23990915 的回复:
hibernate难道不能处理date?


當然可以處理了!!! API里都有的
wx23990915 2010-03-02
  • 打赏
  • 举报
回复
hibernate难道不能处理date?
little06 2010-03-02
  • 打赏
  • 举报
回复
不用那样用的
Date转为String后,Date的大小比较,排序问题就变得很麻烦
dinghun8leech 2010-03-02
  • 打赏
  • 举报
回复
我也来学习了,呵呵。
平常我也用的date转String辅以字符串操作来应付几种时间格式的需求,下次得改用Date了。
BearKin 2010-03-02
  • 打赏
  • 举报
回复
另问:Date类型有啥麻烦的?...
BearKin 2010-03-02
  • 打赏
  • 举报
回复
引用 8 楼 bao110908 的回复:
比如说,date 类型在 Oracle 中占用 7 个字节,如果采用 varchar2 的话,年月日时分秒,加上分隔符 2010-03-01 23:39:00 需要占用 19 个字节,占用空间增加了 12 个字节。不仅如此,这个日期只能以这种格式进行显示,要更改显示格式的话,比如说不需要秒,那就要进行字符串处理。

如果把一个字符串式的日期存入数据库中,并且程序中也没有进行校验的话,那对数据的正确性会产生威害。

另外,其实现在有很多的应用,主键用的都是字符串呢,比如主键使用 UUID。主键使用 UUID 有利也有弊,对此正反双方都是争论不休的。


其实用varchar2也是可以的 只要该参数只负责显示 不参与某些逻辑运算的话 就可以 有些时候像money这类的东西 我也存储成varchar 因为把他保存成number我在程序里还得对那些数进行操作 怪麻烦的
downmoon 2010-03-02
  • 打赏
  • 举报
回复
对不起,最后一句应该是:
相信会解决你类似的这些疑惑。
downmoon 2010-03-02
  • 打赏
  • 举报
回复
如果只是一个主键,想建非聚集索引怎么办?你这个什么师傅啊?
我用的是SQL Server,关于数据字段的存储原理,请看我的读书笔记,相信你不会有些问题。
http://blog.csdn.net/downmoon/archive/2010/01/26/5256548.aspx
  • 打赏
  • 举报
回复
比如说,date 类型在 Oracle 中占用 7 个字节,如果采用 varchar2 的话,年月日时分秒,加上分隔符 2010-03-01 23:39:00 需要占用 19 个字节,占用空间增加了 12 个字节。不仅如此,这个日期只能以这种格式进行显示,要更改显示格式的话,比如说不需要秒,那就要进行字符串处理。

如果把一个字符串式的日期存入数据库中,并且程序中也没有进行校验的话,那对数据的正确性会产生威害。

另外,其实现在有很多的应用,主键用的都是字符串呢,比如主键使用 UUID。主键使用 UUID 有利也有弊,对此正反双方都是争论不休的。
BigBird2012 2010-03-01
  • 打赏
  • 举报
回复
龙果,关键时候还是你能一语惊醒梦中人啊!我有资本和导师对峙了!呵呵!龙果,麻烦您再给我提点建议!
  • 打赏
  • 举报
回复
当然不能这么做了!

比如有一个字段是金额,那我要求总金额,你用 varchar 了那怎么 sum 呢?
JavaAlpha 2010-03-01
  • 打赏
  • 举报
回复
luffyke 2010-03-01
  • 打赏
  • 举报
回复
引用 3 楼 bigbird2012 的回复:
我知道,我是在想用在数据库中用String代替date类型是否合适?

严格来说不是很合适,不过还是可以用的
加载更多回复(3)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧