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: 网页编程