今天开始学习三大框架之一Hibernate。通过今天的学习让我明白了,Hibernate主要完成的是数据库的连接及访问。主要简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作,整个过程分为以下几步:
1.加jar包,主要包括Hibernate的核心包,支持包,驱动程序,日志包
Hibernate核心包主要是点击鼠标右键添加的,新建项目,右击,myeclipse-->add Hibernate Capabilities.在这里我们选择Hibernate3.3 core,也就是核心包,一直点下一步,生成Hibernate工具类。在这里我们已经添加了核心包、支持包和日志包,然后我们手动添加mysql jar包。
2.书写配置文件实现和数据库的连接
普通的xml文件采用dtd文件对xml进行了约束
在hibernate.cfg.xml中添加数据库连接,在Properties中添加hbm2ddl.auto,值为update,表示数据库以更新的形式存在。添加show_sql,值为true,这样我们在运行程序的时候会在后台打印sql语句,方便我们调试。
在实体类所在的包中添加User.hbm.xml,User是实体类的名字。这就是Hibernate的映射文件,主要目的是完成类名映射表名,属性名映射字段名,属性类型映射字段类型。
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.axjy.entity">
<!-- 该映射文件目的 类名映射表名,属性名映射字段名,属性类型映射字段类型 -->
<class name="User" table="t_user">
<id name="id" column="id" type="int">
<generator class="native"/>
</id>
<property name="username" column="username" type="string"/>
<property name="password" type="string"/>
</class>
</hibernate-mapping>
name="User" table="t_user"实现了类名映射表名
id表示数据库中的主键,generator表示自动增长,实现了属性名映射字段名,
type="int"实现了属性类型映射字段类型,这里的int不是Java的数据类型,也不是Mysql的数据类型,而是Hibernate独有的数据类型,如果想在这里写Java的数据类型,也可以,不过要写上包名。
下面的所有字段类似,如果出现映射名字一样的,可以省略不写。
最后把这个映射文件拖到hibernate.cfg.xml中的Mapping中,配置文件书写完毕。
3.书写实体类
根据数据库中的相应字段,编写实体类。
5.测试,生成表
主要代码为:
package com.axjy.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.axjy.entity.User;
import com.axjy.util.HibernateUtil;
public class UserTest {
public static void main(String[] args) {
Session session = HibernateUtil.getSession();
User u = new User();
u.setUsername("张三");
u.setPassword("123");
Transaction tx = session.beginTransaction();
try {
session.save(u);
} catch (Exception e) {
tx.rollback();//回滚
}
tx.commit();
HibernateUtil.closeSession();
}
}
1.加jar包,主要包括Hibernate的核心包,支持包,驱动程序,日志包
Hibernate核心包主要是点击鼠标右键添加的,新建项目,右击,myeclipse-->add Hibernate Capabilities.在这里我们选择Hibernate3.3 core,也就是核心包,一直点下一步,生成Hibernate工具类。在这里我们已经添加了核心包、支持包和日志包,然后我们手动添加mysql jar包。
2.书写配置文件实现和数据库的连接
普通的xml文件采用dtd文件对xml进行了约束
在hibernate.cfg.xml中添加数据库连接,在Properties中添加hbm2ddl.auto,值为update,表示数据库以更新的形式存在。添加show_sql,值为true,这样我们在运行程序的时候会在后台打印sql语句,方便我们调试。
在实体类所在的包中添加User.hbm.xml,User是实体类的名字。这就是Hibernate的映射文件,主要目的是完成类名映射表名,属性名映射字段名,属性类型映射字段类型。
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.axjy.entity">
<!-- 该映射文件目的 类名映射表名,属性名映射字段名,属性类型映射字段类型 -->
<class name="User" table="t_user">
<id name="id" column="id" type="int">
<generator class="native"/>
</id>
<property name="username" column="username" type="string"/>
<property name="password" type="string"/>
</class>
</hibernate-mapping>
name="User" table="t_user"实现了类名映射表名
id表示数据库中的主键,generator表示自动增长,实现了属性名映射字段名,
type="int"实现了属性类型映射字段类型,这里的int不是Java的数据类型,也不是Mysql的数据类型,而是Hibernate独有的数据类型,如果想在这里写Java的数据类型,也可以,不过要写上包名。
下面的所有字段类似,如果出现映射名字一样的,可以省略不写。
最后把这个映射文件拖到hibernate.cfg.xml中的Mapping中,配置文件书写完毕。
3.书写实体类
根据数据库中的相应字段,编写实体类。
5.测试,生成表
主要代码为:
package com.axjy.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.axjy.entity.User;
import com.axjy.util.HibernateUtil;
public class UserTest {
public static void main(String[] args) {
Session session = HibernateUtil.getSession();
User u = new User();
u.setUsername("张三");
u.setPassword("123");
Transaction tx = session.beginTransaction();
try {
session.save(u);
} catch (Exception e) {
tx.rollback();//回滚
}
tx.commit();
HibernateUtil.closeSession();
}
}
下面你将会神奇的看到数据库中已经自动生成了一个表,并有一条数据。这里我强调一点,大多人不写 tx.commit();这一句代码,结果发现数据库中没有任何内容,这里我给大家解释这个问题。我们在测试类开始new了一个session,后面我们是把数据存到了session,但并没有提交到数据库,所以我们必须完成这行代码,进行事务提交,这样才是一个完成的hibernate程序。