Hibernate学习笔记

Hibernate


注解

Hibernate配置文件
1. xxx.cfg.xml 默认加载hibernate.cfg.xmlhibernate配置详解
2. hibernate.properties 作用与xml相同

<?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">oracle.jdbc.driver.OracleDriver</property>
        <!-- 指定数据库连接串  -->
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <!-- 指定数据库连接的用户名  -->
        <property name="hibernate.connection.username">dengou</property>
        <!-- 指定数据库连接的密码  -->
        <property name="hibernate.connection.password">123123</property>
        <!-- 指定数据库使用的方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <!-- 指定是否打印SQL语句 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 格式化sql -->
        <property name="hibernate.format_sql">true</property>

        <!-- 指定 -->
        <property name="hibernate.hbm2ddl.auto">create</property>

        <!-- 映射配置文件 -->
        <!-- resource指向源文件(xml,等配置文件);class指向类(一般用于注解) -->
        <mapping resource="test/hibernate/emp/Emp.hbm.xml" />
    </session-factory>
</hibernate-configuration>

hibernate映射
1. xxx.hbm.xml配置映射关系
2. 注解方式配置映射 关系

<?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="test.hibernate.emp.Emp" table="emp1" >
            <!-- id:配置数据库中的主键在java中的属性名 -->
            <!--hibernate主键生成策略:(generator)
            increment:代理主键,适合于所有数据库,由hibernate维护主键自增,和底层数据库无关,但是不适合于2个或以上hibernate进程。
            identity:代理主键,适合于Mysql或ms sql server等支持自增的dbms,主键值不由hibernate维护。
            sequence:代理主键,适合于oracle等支持序列的dbms,主键值不由hibernate维护,由序列产生。
            native:代理主键,根据底层数据库的具体特性选择适合的主键生成策略,如果是mysql或sqlserver,选择identity,如果是oracle,选择sequence。
            hilo:代理主键,hibernate把特定表的字段作为hign值,生成主键值
            uuid.hex:代理主键,hibernate采用uuid 128位算法生成基于字符串的主键值
            assign:适合于应用程序维护的自然主键。(默认)-->
            <id column="empno" name="empno">
                <generator class="native"></generator>
            </id>
            <!-- property:配置其他属性映射 -->
            <property name="ename" column="ename" unique="true" ></property>
            <property name="sal" column="sal"   />
            <property name="job" column="job" />
        </class>
    </hibernate-mapping>

SessionFactory类 :主要负责创建Session的实例

Session类:数据库连接对象(类似Connection)
1. session.get(Class clazz, Serializable id);根据主键值获取实例对象,没有则返回null
2. session.load();
3. load()和get()的区别:
1. load()方法找不到数据时抛出异常(),get()方法找不到数据时返回Null;
2. get()方法是直接检索数据;load()默认是懒加载,(lazy=true),在需要用到该对象时才进行检索

  1. session的缓存

    1. 清空缓存
      • session.clear();清空所有缓存
      • session.evict(Object obj);从缓存中清除指定对象
  2. session.flush()

    • 同步缓存到数据库,执行insert,update,delete等操作,不提交事务
    • 只有调用session.flush()之后,session缓存中的数据才会发送到数据库,进行真正的持久化操作
    • transaction.commit() 提交事务之前会调用 session.flush()
    • query执行查询之前也会调用session.flush()

Transaction类:事务对象

        //创建一个配置对象
        configuration = new Configuration().configure();
        //创建一个服务对象
        ServiceRegistry build = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        //创建SessionFactory对象
        sessionFactory = configuration.buildSessionFactory(build);
        //创建一个新的session对象
        session = sessionFactory.openSession();

        session = sessionFactory.currentSession();

Query类:通过Query对象,可以使用类似SQL语法的HQL来执行常规的数据库操作
1. 获取Query对象
java
Query query = session.createQuery(String HQL);

  1. 执行查询

    1. 如果HQL语句中需要有变量,可以用 “?” 或者 命名参数

      1. ”?” 替代的方法,与java.sql.PreparedStatement的 “?” 用法类似,注意:query.set(index, value)的index(下标)是从 0 开始
        //sql语句
        String sql = "Select * from emp where eno = ? and sal = ?";
        
        //PreparedStatement的set方法示例:
        ps.set(1, XXX);
        ps.set(2, XXX);
        
        //hibernate.Query的set方法示例:
        query.set(0, XXX);
        query.set(1, XXX);
        
        //Query的命名参数方法
java.util.Calendar 日历类(抽象类)
  1. 静态属性s
    • YEAR,MONTH,DATE…指的是字段数字值
    • 获取字段值 get(int field) field:可以是 YEAR,MONTH… 等属性,也可以是 int 类型的字段数字值
  2. 获取实例
    • Calendar.getInstance(); //使用默认时区和语言环境获得一个日历
关于java中几种特殊的注释 (可以被eclipse检测到,在task视图中可查看)
  1. TODO:说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。
  2. FIXME:说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。
  3. XXX:说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明。
本 PPT 介绍了制药厂房中供配电系统的总体概念与设计要点,内容包括: 洁净厂房的特点及其对供配电系统的特殊要求; 供配电设计的一般原则与依据的国家/行业标准; 从上级电网到工厂变电所、终端配电的总体结构与模块化设计思路; 供配电范围:动力配电、照明、通讯、接地、防雷与消防等; 动力配电中电压等级、接地系统形式(如 TN-S)、负荷等级与可靠性、UPS 配置等; 照明的电源方式、光源选择、安装方式、应急与备用照明要求; 通讯系统、监控系统在生产管理与消防中的作用; 接地与等电位连接、防雷等级与防雷措施; 消防设施及其专用供电(消防泵、排烟风机、消防控制室、应急照明等); 常见高压柜、动力柜、照明箱等配电设备案例及部分设计图纸示意; 公司已完成的典型项目案例。 1. 工程背景与总体框架 所属领域:制药厂房工程的公用工程系统,其中本 PPT 聚焦于供配电系统。 放在整个公用工程中的位置:与给排水、纯化水/注射用水、气体与热力、暖通空调、自动化控制等系统并列。 2. Part 01 供配电概述 2.1 洁净厂房的特点 空间密闭,结构复杂、走向曲折; 单相设备、仪器种类多,工艺设备昂贵、精密; 装修材料与工艺材料种类多,对尘埃、静电等更敏感。 这些特点决定了:供配电系统要安全可靠、减少积尘、便于清洁和维护。 2.2 供配电总则 供配电设计应满足: 可靠、经济、适用; 保障人身与财产安全; 便于安装与维护; 采用技术先进的设备与方案。 2.3 设计依据与规范 引用了大量俄语标准(ГОСТ、СНиП、SanPiN 等)以及国家、行业和地方规范,作为设计的法规基础文件,包括: 电气设备、接线、接地、电气安全; 建筑物电气装置、照明标准; 卫生与安全相关规范等。 3. Part 02 供配电总览 从电源系统整体结构进行总览: 上级:地方电网; 工厂变电所(10kV 配电装置、变压
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值