代码如下:
bean类:
package org.hibernate.sample.modle;
import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
/** identifier field */
private Integer studentId;
/** persistent field */
private String name;
/** persistent field */
private String sex;
/** persistent field */
private Integer age;
/** full constructor */
public Student(String name, String sex, Integer age) {
this.name = name;
this.sex = sex;
this.age = age;
}
/** default constructor */
public Student() {
}
public Integer getStudentId() {
return this.studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return this.age;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return new ToStringBuilder(this)
.append("studentId", getStudentId())
.toString();
}
}
映射配置:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<id name="studentId" type="java.lang.Integer" column="student_id" unsaved-value="0">
<generator class="native"/>
</id>
<property name="name" type="java.lang.String" column="name" not-null="true"
length="45"/>
<property name="sex" type="java.lang.String" column="sex" not-null="true"
length="45"/>
<property name="age" type="java.lang.Integer" column="age" not-null="true"
length="45"/>
<!-- Associations -->
配置文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- SessionFactory 配置 -->
<session-factory>
<!-- MySQL配置 -->
<!-- 数据库URL -->
<property name="connection.url">
<![CDATA[ jdbc:mysql://localhost:3306/bms?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8]]>
</property>
<!-- 数据库JDBC驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--数据库用户名 -->
<property name="connection.username"><![CDATA[root]]></property>
<!--数据库用户密码 -->
<property name="connection.password"></property>
<!--dialect ,每个数据库都有其对应的Dialet以匹配其平台特性 -->
<property name="dialect"> org.hibernate.dialect.MySQLDialect</property>
<!-- 是否将运行期生成的SQL输出到日志以供调试 -->
<property name="show_sql">true</property>
<!--映射文件配置,注意配置文件名必须包含其相对于根的全路径 -->
<mapping resource="org/hibernate/sample/modle/Student.hbm.xml"/>
</session-factory>
测试类:
package test;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
import org.hibernate.sample.modle.Student;
import junit.framework.Assert;
import junit.framework.TestCase;
public class HibernateTest extends TestCase {
Session session = null;
/**
* JUnit中setUp方法在TestCase初始化的时候会自动调用 一般用于初始化公用资源 此例中,用于初始化Hibernate Session
*/
protected void setUp() {
try {
/**
* 采用hibernate.properties配置文件的初始化代码: Configuration config = new
* Configuration(); config.addClass(TUser.class);
*/
// 采用hibernate.cfg.xml配置文件
// 请注意初始化Configuration时的差异:
// 1.Configuration的初始化方式
// 2.xml文件中已经定义了Mapping文件,因此无需再Hard Coding导入
// POJO文件的定义
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
} catch (HibernateException e) {
e.printStackTrace();
}
}
/**
* 与setUp方法相对应,JUnit TestCase执行完毕时,会自动调用tearDown方法 一般用于资源释放
* 此例中,用于关闭在setUp方法中打开的Hibernate Session
*/
protected void tearDown() {
try {
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
/**
* 对象持久化(Insert)测试方法
*
* JUnit中,以”test”作为前缀的方法为测试方法,将被JUnit自动添加 到测试计划中运行
*/
public void testInsert() {
try {
Student student = new Student();
// student.setStudentId( Integer.valueOf(1));
student.setName("哈哈");
student.setSex("男");
student.setAge(Integer.valueOf(13));
session.save(student);
session.flush();
System.out.println(student.getStudentId());
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
/**
* 对象读取(Select)测试 请保证运行之前数据库中已经存在name=’Erica’的记录
*/
public void testSelect() {
String hql = " from Student where name='哈哈'";
try {
Query query= session.createQuery(hql);
List list=query.list();
Student student = (Student) list.get(0);
Assert.assertEquals(student.getName(), "哈哈");
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
}
[b]问题补充:[/b]
数据库表的
create table student(
student_id integer unsigned auto_increment,
name varchar(45) not null,
sex varchar(45) not null,
age integer not null
);