Hibernate是一种持久层框架。
定义角色POJO(Plain Ordinary Java Object )
public class Role implements java.io.Serializable {
private Integer id;
private Srting roleName;
private Srting note;
/** setter and getter **/
}
Hibernate映射文件
<?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>
<class name="com.Pojo.Role" table="t_role">
<id name = "id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name = "roleName" type="string">
<column name="role_name" length="60" not-null="true" />
</property>
<property name = "note" type ="string">
<column name ="note" length="512" />
</property>
</class>
</hibernate-mapping>
Hibernate 通过Session操作数据库数据
Session session = null;
Transaction tx = null;
try{
// 打开Session
//调用Hibernate框架中的Session接口并打开接口
session = HibernateUtil.getSessionFactory().openSession();
// 事务
tx = session.beginTransaction(); // 开始执行事务
//POJO
Role role = new Role(); // 实例化 角色Role
role.setId(1); // 设置并封装角色的相关数据
role.setRoleName("rolename1");
role.setNote("note1");
session.save(role);// 保存,将封装的对象存储到session中
Role role2 = (Role) session.get(Role.class,1);// 查询,通过实体的信息在session中进行查询
role2.setNote("修改备注");
session.update(role2); // 在Session中存储role2,??? Session中还存在role1吗? A:有
System.err.println(role2.getRoleName());// 将role2的信息输出
session.delete(role2);//删除
tx.commit();//提交事务
}catch (Exception ex) {
if ( tx != null && tx.isActive()) {
session.close();
}
}
我们没有看到SQL语句,因为这里操作的对象是实体,我们将实体存储到Session中,可以save(),delete(),get(),update()对象相应的信息,Hibernate会根据映射关系来生成对应的SQL,从而起到操纵的目的。