各位同学啊,
我写了一个论坛登录用户的实体类User,
public class User{
 private String name;
 private int id;
 private String  password;
 private Date lastLoninTime;
 private Date registDate;
 //省略相关getter/setter
 }
设计大概是jsp-->servlet-->service-->dao-->oracle,用的是ORACLE数据库,想要的结果是用户上次登陆时间类似于:2008-09-07 11:23:45 格式的日期时间类型,而用户的注册时间类似于2008-09-03格式的,请问
1,我的User类中lastLoninTime用的是java.sql.Date还是java.util.Date?registDate呢?
2,另外还有两个日期时间类java.text.Calendar和TIMESTAMP,这两个怎么样?
3,在数据库中,User类对应的表Tuser中,lastLoninTime字段和registDate字段的字段类型是用Date类型?还是TIMESTAMP类型?INTERVAL类型?

解决方案 »

  1.   

    用什么都行,没什么关系的,java.sql.Date是继承自java.util.Date的.
      

  2.   

    如果自己写,用JDBC,我的Date都是用 java.sql.Date,如楼上所说,他是java.util.Date的子类。所以父类的方法可以直接使用如果日期带有年月日时分秒,我一般使用java.sql.Timestamp
    如果只有年月日,我则用 java.sql.Date
      

  3.   

    java.util.Date 我用过这个,还行,不错的,你可以试用一下,可以完成的,
      

  4.   

    我建议bean或者叫模型中的属性都采用java.util.Date,当需要和数据库交互的时候,可以new一个java.sql.Date。
    因为在业务逻辑中,java.util.Date应用更加的广泛,在jdk中,java.sql.Date继承自java.util.Date可能本身就是一个不良设计。其次针对你的问题,你应该看看数据库中的各种类型到底能精确到什么程度。写几个例子做一下实验不会浪费太多时间。另外即使数据库中是相同的类型,你用jdbc往数据库里插入日期时用java.sql.Date或者java.sql.Timestamp,最后在数据库中的结果有可能也是不同的。
      

  5.   

    引用一种说法,供楼主参考:
    java.util.Date 是 java.sql.Date 的父类(注意拼写)
    前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
    后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date 
    转换是
    java.sql.Date date=new Java.sql.Date();
    java.util.Date d=new java.util.Date (date.getTime());
      

  6.   

    楼上的说的都很对呀。你看着办吧。
    一起学习吧。
    csdn真是高手如云呀。
    o(∩_∩)o...
      

  7.   

    看看api,知道了他们的关系,就好用了
      

  8.   

    java web 编程让人很头疼
      

  9.   

    1,我的User类中lastLoninTime用的是java.sql.Date还是java.util.Date?registDate呢? 
    可以都用java.util.Date,到底是精确到时间,还是仅仅需要日期,可以让Servlet进行处理。
    在需要精确时,使用new Date();
    只需要日期时,使用SimpleDateFormat进行一下处理。
    2,另外还有两个日期时间类java.text.Calendar和TIMESTAMP,这两个怎么样? 
    这两个俺都没有用过。不过现在的SUN JDK文档里,明确提出了不推荐继续使用java.util.Date,而推荐使用java.util.Calendar.
    但是现在大家基本都仍然在用Date类。
    如果需要对网站进行国际化,需要处理时差等问题时,Calendar的优势就表现出来了。
    3,在数据库中,User类对应的表Tuser中,lastLoninTime字段和registDate字段的字段类型是用Date类型?还是TIMESTAMP类型?INTERVAL类型?
    数据库里采用Date类型。
    如果使用hibernate联系数据库,可以在*.hbm.xml中配置长度为10就足够了。Good luck!
      

  10.   

    java.sql.Date,如楼上所说,他是java.util.Date的子类。所以父类的方法可以直接使用 
    如果日期带有年月日时分秒,我一般使用java.sql.Timestamp 
    如果只有年月日,我则用 java.sql.Date 
      

  11.   

    个人认为用java.util.Date,应用范围更广一些。就算是非数据库操作也可以使用,对你写公共接口很有利。
      

  12.   

    看着大家这么踊跃发言,我于是试试看了一下,在DAO中,论坛注册用户的持久代码如下:
         public void save(final User person) {
      jdbcTemplate.update("insert into person(id,name,registDate,lastLoninTime,password) values(?,?,?,?,?,?)", new PreparedStatementSetter(){
      public void setValues(PreparedStatement ps)throws SQLException{
      ps.setInt(1,User.nextval);
      ps.setString(2,person.getName());
      ps.setDate(3,sysdate);
      ps.setDate(4,null);
      ps.setString(5,person.getPassword());
     
      }
      });  }     
         结果是,ps.setInt(1,User.nextval);和ps.setDate(3,sysdate);提示有错误,为何?其中我已经在oracle中create sequence User了
      

  13.   

    我也是始终不明白,sql.Date存在的意义
      

  14.   

    前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
    后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第 2个参数都是java.sql.Date 
      

  15.   


    我也认为实体的属性应该用util.date 这样更符合。