在数据库中存放时间或者日期是在Modle映射的方法。
第一步:编写Modle类在这里模拟一个Person的表属性有id 人的姓名 人的生日 和人的年龄
package com.ygc.hibernate.modle;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="Person")
public class Person implements Serializable {
private int id;
private String name;
private Date birthDay;
private int age;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Temporal(value=TemporalType.DATE)
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
第二步:编写Main方法测试类
package com.ygc.hibernate.main;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.ygc.hibernate.modle.Person;
import com.ygc.hibernate.utils.HibernateUtils;
public class PeronTest {
/**
* @param args
*/
public static void main(String[] args) {
Person person = new Person();
person.setName("张三");
person.setAge(32);
person.setBirthDay(new Date());
SessionFactory sessionFactory = HibernateUtils.getHibernates().getFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(person);
session.getTransaction().commit();
session.close();
sessionFactory.close();
}
}
第三步:编写工具类
package com.ygc.hibernate.utils;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static HibernateUtils instance;
private HibernateUtils(){}
public static HibernateUtils getHibernates(){
if(instance==null){
instance = new HibernateUtils();
}
return instance;
}
public SessionFactory getFactory(){
Configuration configuration = new AnnotationConfiguration().configure();
return configuration.buildSessionFactory();
}
}
第四步:修改hibernate.cfg.xml配置文件的映射
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<!--<property name="connection.pool_size">1</property>-->
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<!--<property name="current_session_context_class">thread</property>-->
<!-- Disable the second-level cache -->
<!--<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>-->
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!--自动创建表-->
<property name="hbm2ddl.auto">create</property>
<!-- Drop and re-create the database schema on startup -->
<!--<property name="hbm2ddl.auto">update</property>-->
<!--<mapping resource="com/ygc/hibernate/modle/Students.hbm.xml"/>-->
<mapping class="com.ygc.hibernate.modle.Person"/>
</session-factory>
</hibernate-configuration>
第五步:修改log4j.xml或添加日志配置
# Configure logging for testing: optionally with log file
# debug,info,warn,error,fatal
log4j.rootLogger=debug, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=D:/logs/hibernate.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.logger.org.hibernate.tool.hbm2ddl=debug
最后运行查看结果 如果配置@Temporal(value=TemporalType.DATE)时插入的是日期,如果配置的是@Temporal(value=TemporalType.TIME)是插入的是时间。
效果:
登录mysql:
C:\Documents and Settings\Administrator>mysql -uroot -proot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.15 MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hibernate |
| hibernates |
| mysql |
| performance_schema |
| test |
| xqwy |
+--------------------+
7 rows in set (0.02 sec)
使用数据库
mysql> use hibernate;
Database changed
查询数据库看结果 配置为@Temporal(value=TemporalType.DATE)
mysql> select * from person;
+----+-----+------------+------+
| id | age | birthDay | name |
+----+-----+------------+------+
| 1 | 32 | 2013-09-21 | 张三 |
+----+-----+------------+------+
1 row in set (0.01 sec)
查询数据库看结果 配置为@Temporal(value=TemporalType.TIME)
mysql> select * from person;
+----+-----+----------+------+
| id | age | birthDay | name |
+----+-----+----------+------+
| 1 | 32 | 15:46:51 | 张三 |
+----+-----+----------+------+
1 row in set (0.00 sec)
通过查询数据库可以看出当配置为Date是插入的是日期,当配置为Time是插入的是时间,在开发中就可以灵活应用了,对了默认情况下是日期和时间都会插入的
查询数据库查看结果。配置为@Temporal(value=TemporalType.TIMESTAMP) 默认是这个配置。
mysql> select * from person;
+----+-----+---------------------+------+
| id | age | birthDay | name |
+----+-----+---------------------+------+
| 1 | 32 | 2013-09-21 15:49:00 | 张三 |
+----+-----+---------------------+------+
1 row in set (0.00 sec)