java.util.Date和java.sql.Date的区别

           这两天一直在折腾从JSP页面到Action和从Action到JSP页面,日期类型和字符串之间的转换问题。虽然折腾了两天真费劲,不过还有一点小收获。

           java.util.Date 是JAVA类里常用的日期类型,这个不多说。

           一直很疑惑 java.sql.Date 是做什么用的,和java.util.Date 有什么区别,昨天突然发现和明白,原来它是持久类方式查询数据库时,持久类Date类型成员属性赋值的一个格式化日期类型,它只有日期没有时间。与其对应的还有  java.sql.Timestamp(有日期有时间) 和  java.sql.Times (只有时间没有日期),可通过HQL注释进行设置。

          例如:我有一个持久类

@Entity
          @Table(name = "TLM_CUS_CLEARENCE", schema = "MEDEV")
          public class CusClearence {

              public java.util.Date ccRecordedTime;  //录入时间

              @Temporal(TemporalType.DATE) 

              @Column(name = "CC_RECORDED_TIME", length = 7)
              public Date getCcRecordedTime() {
                          return this.ccRecordedTime;
               }

              public void setCcRecordedTime(Date ccRecordedTime) {
                           this.ccRecordedTime = ccRecordedTime;
              } 

      虽然ccRecordedTime成员类型设为java.util.Date,但是通过HQL语句查询数据库并将结果对象赋给持久类后,我发觉该ccRecordedTime成员属性的类型变成了 java.sql.Date ! 且若数据库表字段存储的值为日期加时间,例如2012-01-19 13:50,而ccRecordedTime 的值只有日期,没有时间,即2012-01-19。
      通过持久类保存数据到数据库时亦同,ccRecordedTime字段也只保存日期到数据库,而把时间去掉了。
      相应的如果注释日期字段时间类型为 TemporalType.Timestamp TemporalType.Time ,则ccRecordedTime类型相应变成java.sql.Timestamp 和 java.sql.Time。 所以数据库表的日期字段 想存储哪种类型,持久类注释就可以设置为相应的类型,在从数据库取数及保存到数据库时,Hibernate就已经帮做了日期和时间之间取舍的处理。
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值