一、实体类(Entity)
package com.javademo;
import java.util.Date;
public class Event {
private Long id;
private String title;
private Date date;
public Event() {
// Hibernate自动调用无参构造方法
}
public Event(String title, Date date) {
// for application use, to create new events
this.title = title;
this.date = date;
}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
二、在和Event类同一个包下添加Event.hbm.xm文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.javademo">
<!--
class 指定实体类的类名
table 指定实体类对应的表名(默认和类名相同)
-->
<class name="Event" table="EVENTS">
<!--
id 指定实体类对应的数据表的主键
column 指定主键名称
-->
<id name="id" column="EVENT_ID">
<!--
generator 主键生成器
-->
<generator class="increment"/>
</id>
<!--
property 指定一般属性(不是主键)字段对应的数据表的列名
name 实体类的属性名
type 数据类型
column 对应的列名
-->
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>
</class>
</hibernate-mapping>
三、在classpath路径配置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>
<!-- 设置数据库连接-->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 数据库连接池 -->
<!-- <property name="connection.pool_size">1</property> -->
<!-- SQL方言 指明使用什么SQL数据库 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 不使用第二级缓存 -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<!-- 配置映射信息 注意是resource -->
<mapping resource="com/javademo/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
四、测试
SessionFactory sessionFactory;
@Test
public void test1() {
/**
* 取得hibernate.cfg.xml配置文件
*/
StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() // configures settings from hibernate.cfg.xml
.build();
sessionFactory = new MetadataSources(registry).buildMetadata()
.buildSessionFactory();
/**
* 添加数据
*/
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(new Event("Our very first event!", new Date()));
session.save(new Event("A follow up event", new Date()));
session.getTransaction().commit();
session.close();
/**
* 查询数据
*/
session = sessionFactory.openSession();
session.beginTransaction();
List result = session.createQuery( "from Event" ).list();
for ( Event event : (List<Event>) result ) {
System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
}
session.getTransaction().commit();
session.close();
}
上述例子基于5.2.2版本的Hibernate