10022---Hibernate--主要类和配置文件

创建持久化 Java 类

1.提供一个无参的构造器:使Hibernate可以使用Constructor.newInstance() 来实例化持久化类

2.提供一个标识属性(identifier property): 通常映射为数据库表的主键字段. 如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate()
3.为类的持久化类字段声明访问方法(get/set): Hibernate对JavaBeans 风格的属性实行持久化。

4.使用非 final 类: 在运行时生成代理是 Hibernate 的一个重要的功能. 如果持久化类没有实现任何接口, Hibnernate 使用CGLIB生成代理. 

    如果使用的是 final 类, 则无法生成 CGLIB 代理.

5.重写 eqauls 和 hashCode 方法: 如果需要把持久化类的实例放到 Set 中(当需要进行关联映射时), 则应该重写这两个方法

Hibernate低侵入式设计

Hibernate 不要求持久化类继承任何父类或实现接口,这可以保证代码不被污染。这就是Hibernate被称为低侵入式设计的原因

创建对象-关系映射文件(*.hbm.xml)

1.Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 
  在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句
2.映射文件的扩展名为 .hbm.xml

News.hbm.xml

<hibernate-mapping>
 <!-- 指定类和表的映射 -->
    <class name="com.cbg.hibernate.helloworld.News" table="NEWS">
        <!-- 指定对象标识符生成器, 负责为 OID 生成唯一标识符 -->
        <!-- 指定持久化类的OID 和表的主键的映射 -->
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <!-- 主键生成方式  -->
            <generator class="native" />
        </id>
        <!-- 映射类的属性和表的字段 -->
        <property name="titile" type="java.lang.String">
            <column name="TITILE" />
        </property>
        <property name="author" type="java.lang.String">
            <column name="AUTHOR" />
        </property>
        <property name="date" type="java.sql.Date">
            <column name="DATE" />
        </property>
    </class>
</hibernate-mapping>

创建 Hibernate 配置文件(hibernate.cfg.xml)

Hibernate 从其配置文件中读取和数据库连接的有关信息, 这个文件应该位于应用的 classpath 下.

通过 Hibernate API 编写访问数据库的代码

测试代码


下边是控制台输出的 SQL 语句


Configuration 类

Configuration 类负责管理 Hibernate 的配置信息。包括如下内容:
Hibernate 运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。
持久化类与数据表的映射关系(*.hbm.xml 文件)
创建 Configuration 的两种方式
属性文件(hibernate.properties):

Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml)
Configuration cfg = new Configuration().configure();
Configuration 的 configure 方法还支持带参数的访问:
File file = new File(“simpleit.xml”);
Configuration cfg = new Configuration().configure(file);

SessionFactory 接口

针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。 
SessionFactory 对象一旦构造完毕,即被赋予特定的配置信息
SessionFactory是生成Session的工厂
构造 SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象。
Hibernate4 新增了一个 ServiceRegistry 接口,所有基于 Hibernate 的配置或者服务都必须统一向这个 ServiceRegistry  注册后才能生效
Hibernate4 中创建 SessionFactory 的步骤

Session 接口

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。

此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处相当于 JDBC 中的 Connection
持久化类与 Session 关联起来后就具有了持久化的能力。
Session 类的方法:
取得持久化对象的方法: get() load()
持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()
开启事务: beginTransaction().
管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()

Transaction(事务)

代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。 
  
Transaction tx = session.beginTransaction();

常用方法:
commit():提交相关联的session实例
rollback():撤销事务操作
wasCommitted():检查事务是否提交

Hibernate 配置文件的两个配置项(hbm2ddl.auto和format_sql)

hbm2ddl.auto:该属性可帮助程序员实现正向工程, 即由 java 代码生成数据库脚本, 进而生成具体的表结构. 。取值 create | update | create-drop | validate
create : 会根据 .hbm.xml  文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变 
create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除 
update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml  文件和数据库中对应的数据表的表结构不同, Hiberante  将更新数据表结构,但不会删除已有的行和列 
validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常
format_sql:是否将 SQL 转化为格式良好的 SQL . 取值 true | false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值