二、项目实践
这里以一个简单的程序来示范Hibernate的配置与功能,在这个例子中的一些操作,实际上会使用一些自
动化工具来完成,而不一定亲自手动操作设定,这边完全手动的原因,在于让你可以知道Hibernate的基
本流程。
这是整个项目的结构:
好了,下面就开始创建项目了。
1. 创建项目
·
新建一个Java项目:HibernateBegin_1,注意选中“创建单独的源文件夹和输出文件夹”。
点击“下一步”,切换到“库”,点击“添加库”,如下图:
· 选择“用户库”
· 勾选先前设置好的hibernate用户库。
2. 建立可持久化类
· 下面开始创建一个新类:User;包名:javamxj.hibernate ;
然后添加三个变量(斜体),代码如下:
/*
* 采用常规方法开发一个简单的Hibernate实例
* 创建日期 2005-3-31
* @author javamxj(分享java快乐)
* @link Blog: htpp://javamxj.mblogger.cn
* htpp://blog.csdn.net/javamxj/
*/
package javamxj.hibernate;
public class User {
private int id;
private String username;
private String password;
}
·
点击工具栏上的“源代码(S)”,选择其中的“生成 Getter 和
Setter”(右击,在弹出菜单也可选择),如图:
点击“确定”后,生成如下代码:
/*
* 采用常规方法开发一个简单的Hibernate实例
* 创建日期 2005-3-31
* @author javamxj(分享java快乐)
* @link Blog: htpp://javamxj.mblogger.cn
* htpp://blog.csdn.net/javamxj/
*/
package javamxj.hibernate;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
好了,这个类完成了。它是一个普通的Java对象(Plain
Old Java Objects,就是POJOs,有时候也称作Plain Ordinary Java
Objects),表示一个数据集合。下面建立一个Hbm文件将这个类映射到数据库的表格上。
3. 映射文件
在javamxj.hibernate包下,新建一个名称为“User.hbm.xml”的文件,使用XMLBuddy编辑它(参考:利用XMLBuddy在Eclipse中开发XML),这样比较方便。文件内容如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="javamxj.hibernate.User" table="UserTable">
<id name="id">
<generator class="assigned" />
</id>
<property name="username" />
<property name="password" />
</class>
</hibernate-mapping>
<?xml version='1.0' encoding='GBK'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration> <session-factory> <!-- 是否将运行期生成的SQL输出到日志以供调试 --> <property name="show_sql">true</property> <!-- SQL方言,这里设定的是MySQL --> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property> <!-- JDBC驱动程序 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- JDBC URL, "?useUnicode=true&characterEncoding=GBK" 表示使用GBK进行编码 --> <property name="connection.url"> jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&characterEncoding=GBK </property> <!-- 数据库用户名 --> <property name="connection.username">root</property> <!-- 数据库密码 --> <property name="connection.password">javamxj</property> <!-- 指定User的映射文件 --> <mapping resource="javamxj/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>
/* * 简单测试一下User类 * 创建日期 2005-3-31 * @author javamxj(分享java快乐) */ package javamxj.hibernate; import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*; public class Test { public static void main(String[] args) { try { SessionFactory sf = new Configuration().configure() .buildSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); user.setUsername("Blog"); user.setPassword("分享java快乐"); session.save(user); tx.commit(); session.close(); } catch (HibernateException e) { e.printStackTrace(); } } }