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:说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值