1.Hibernate是一个优秀的 Java 持久化层解决方案,是当今主流的 对象-关系 映射工具。
2.什么是 持久化?
JDBC就是一种持久化机制。将程序数据直接保存成文本文件也是持久化机制的一种实现。但我们常用的是将程序数据保存到数据库中。
在 MVC 三层结构中,DAO层(数据访问层)有时候也成为持久化层。
[singlepic id=80 w=320 h=240 float=none]
3.什么是 对象-关系 映射?
我们多以面向对象的方式组织程序,瞬时的数据也多以对象的形式存在,而持久的数据多保存在关系型数据库中。所以,在通常的情况下,持久化将要完成的操作就是把对象保存到关系型数据库中,或者把关系型数据库中的数据读取出来以对象的形式封装。
基于以上所述:我们的持久化工作主要在 O(Object) – R(Relational Database) 之间完成。
Hibernate 就是在 JDBC 的方式上进行封装,以简化 JDBC 方式繁琐的编码工作。是一个轻量级的优秀的 ORM 实现。它能很大程度地简化 DAO 层的编码工作。
[singlepic id=81 w=320 h=240 float=none]
4.使用 Hibernate 的基本步骤
Hibernate 的使用主要有 “3个准备,7个步骤”
- 准备1:导入需要的 jar 包
- http://www.hibernate.org 下载
- MyEclipse 集成了对 Hibernate 的支持,可以直接引用
- 准备2:添加配置文件 — hibernate.cfg.xml
<session-factory> <!-- 配置数据库连接 --> <property name="connection.url"> jdbc:mysql://localhost:3306/users </property> <property name="connection.username">root</property> <property name="connection.password">1111</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <!-- 数据库'方言'支持数据库的种类 --> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <!-- 属性:运行时后台显示SQL语句 --> <property name="show_sql">true</property> <!-- ORM 映射文件 配置 --> <mapping resource="cn/net/royakon/entity/User.hbm.xml" /> </session-factory>
- 实体类注意事项:
实现 implements java.io.Serializalbe 接口
添加默认构造方法 - 添加 User.hbm.xml 映射文件
package cn.net.royakon.entity;
public class User implements java.io.Serializable {
private Integer userId;
private String userName;
private String userPass;
public User() {
}
public User(Integer userId) {
this.userId = userId;
}
public User(Integer userId, String userName, String userPass) {
this.userId = userId;
this.userName = userName;
this.userPass = userPass;
}
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPass() {
return this.userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
}
<hibernate-mapping>
<!-- 实体类-数据库表 的映射 -->
<class name="cn.net.royakon.entity.User" table="user" catalog="users">
<!-- 主键 映射 -->
<id name="userId" type="java.lang.Integer">
<column name="userId" />
<!-- 主键生成方式 identity-自动生成 assigned-程序中指定 根据数据库不同参数有可能不同 -->
<generator class="identity" />
</id>
<!-- 属性-字段 映射 -->
<property name="userName" type="java.lang.String">
<column name="userName" length="50" />
</property>
<property name="userPass" type="java.lang.String">
<column name="userPass" length="50" />
</property>
</class>
</hibernate-mapping>
[singlepic id=82 w=320 h=240 float=none]
try {
//步骤1.读取配置文件
Configuration cfg=new Configuration().configure();
//步骤2.创建 SessionFactory
SessionFactory sf=cfg.buildSessionFactory();
//步骤3.打开 Session
Session s=sf.openSession();
//步骤4.开始一个事务
Transaction t=s.beginTransaction();
//步骤5.持久化操作
User user=new User();
user.setUserName("Test");
user.setUserPass("Test");
s.save(user);
//步骤6.提交事务
t.commit();
} catch (Exception e) {
if (null!=t){t.rollback();}
e.printStackTrace();
} finally {
// 7、关闭Session
s.close();
}
5. Hibernate 实现 数据操作
- 根据主键查询
- 更新数据
- 删除数据
User user = (User)session.get(User.class,id);
User user = this.get(59);
user.setUserName("new Name");
session.update(user);
User user = this.(59); session.delete(user);
Categories: 网页编程