Hibernate中映射时间和日期的配置

在数据库中存放时间或者日期是在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)


 









 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值