Hibernate 第一天

本贴最后更新于 2244 天前,其中的信息可能已经斗转星移

Java EE 三层结构

  1. web 层:struts2
  2. service 层:spring
  3. dao 层:hibernate
  • 对数据库进行 crud 操作

Hibernate 配置文件

  • 映射配置文件
  1. 映射文件的名称和位置没有固定要求
  2. class 标签 name 属性值实体类全路径
  3. id 标签和 property 标签 name 属性值 实体类名称
  4. id 标签和 property 标签,column 属性可以省略
  5. property 标签 type 属性,设置生成表字段类型,自动对应类型(可以不做设置)
//实体类User.java public class User { private int uid; private String username; private String password; private String address; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } //映射文件,User.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!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.eric.demo.entity.User" table="t_user"> <id name="uid" column="uid"> <generator class="native"></generator> </id> <property name="username" column="username"></property> <property name="password" column="password"></property> <property name="address" column="address"></property> </class> </hibernate-mapping>
  • 核心配置文件
  1. 数据库部分必须配置
  2. hibernate 部分可选
  3. 映射文件必须配置
  4. 核心配置文件名称和位置固定(hibernate.cfg.xml、位置在 src 下)
  5. 该文件配置完成后,很少修改
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 第一部分,配置数据库信息(必须) --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">0314</property> <!-- 第二部分,配置hibernate信息(可选) --> <property name="hibernate.show_sql">true</property> <property name="hibernate.fromat_sql">true</property> <!-- 自动生成表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置数据库方言 让hibernate框架识别不同的数据库所持有的语句 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 第三部分,把映射文件放到核心文件中(必须) --> <mapping resource="com/eric/demo/entity/User.hbm.xml"/> </session-factory> </hibernate-configuration>

Hibernate 核心 api 的使用

  • Configuration
  1. 到 src 下找到名称为 hibernate.cfg.xml 配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件)
Configuration cfg = new Configuration(); cfg.configure();
  • SessionFactory(重点)
  1. 使用 Configuration 对象创建 SessionFactory 对象
    1. 根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据映射关系把表创建。
<property name="hibernate.hbm2ddl.auto">update</property>
  1. 创建 SessionFactory 过程中,这个过程需要创建表,这个过程很耗时
    1. 一个项目只创建一个 SessionFactory 对象。
  2. 具体优化实现
    1. 写工具类,写静态代码块实现
public class HibernateUtils { private static final Configuration cfg; private static final SessionFactory sessionFactory; static{ // 加载核心配置文件 cfg = new Configuration(); cfg.configure(); sessionFactory = cfg.buildSessionFactory(); } // 获取SessionFactory的引用 public static SessionFactory getSessionFactory() { return sessionFactory; } }
  • Session(重点
  1. 类似于 jdbc 中的 connection
  2. 调用 session 中的不同方法实现 crud 操作
    1. 添加 save
    2. 修改 update
    3. 删除 delete
    4. 根据 id 查询 get
  3. session 对象是单线程对象:session 不能共用,只能自己使用
  • Transaction
  1. 开启事务
Transaction tx = session.beginTransaction();
  1. 事务的提交 tx.commit()
  2. 事务的回滚 tx.rollback()
  3. 事务的四个特性
    1. 原子性:一组操作,一个失败相当于所有失败
    2. 一致性:操作之前之后,数据总量没变
    3. 隔离性:多个操作同时操作同一条记录,互不影响
    4. 持久性:提交数据到数据库保存

解决 MyEclipse 写配置文件没有提示的问题

  1. 若是电脑可以上网,配置的约束可以有提示功能
  2. 把约束文件引入到 MyEclipse 中
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 726 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3200 引用 • 8216 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...