zoukankan      html  css  js  c++  java
  • oracle总结

    1.oracle
    创建数据库 创建表 添加约束 ...
    用户名,,模式,表空间,序列,同义词,索引,分区表,权限关系
    视图,游标,存储过程,异常处理,pl/sql编程
    --0.启动监听器服务和oracle数据库服务
    lsnrctl start --启动监听器
    net start OracleServiceACCP --启动数据库服务

    --1.如果不知道用户名密码 可以使用数据库管理员权限登录
    sqlplus / as sysdba --在控制台
    --2.修改指定用户名的密码
    alter user system identified by accp;
    --3.自己新建一个账户
    create user shuaige identified by 123456;
    --4.给新用户授权
    grant connect,resource to shuaige;
    --从scott用户下复制dept emp表
    grant all on scott.dept to shuaige;
    grant all on scott.emp to shuaige;

    --5.创建表 添加约束 添加数据
    create table emp as select * from scott.emp;

    create table dept as select * from scott.dept;

    create table dept(
    deptno number(2) not null primary key,
    dname varchar2(20) not null,
    loc varchar2(20) not null
    );
    --删除表
    drop table dept;

    --添加约束
    alter table dept add constraint PK_deptno primary key(deptno);
    alter table emp add constraint PK_empno primary key(empno);
    alter table emp add constraint FK_deptno foreign key(deptno) references DEPT(deptno);

    --6.数据的操作(增 删 该 查)
    --6.1查询
    select * from emp;
    select * from dept;
    --6.2删除
    delete emp where empno=7369;
    --6.3添加
    insert into dept values(50,'研发部','深圳');
    --6.4修改
    update dept set dname='财务部' where deptno=50;
    2.Hibernate
    2.1.搭建Hibernate开发环境
    1.添加Hibernate jar包
    2.创建hibernate.cfg.xml配置文件
    3.创建实体类以及*.hbm.xml映射文件
    session进行数据的增删改查操作 在进行增删改时必须开启事务Transaction
    Hibernate中java对象的三种状态
    2.2hql查询:hql语句是针对类的查询 可以进行数据的删除 修改 查询操作 但是不能新增
    hql语句的其他操作 分组 使用聚合函数 连接 排序都一样
    分页查询:
    setFristResult()
    setMaxResult()
    uniqueResult() 唯一查询
    投影查询:只查询实体类中部分属性对应的数据
    1.只是一列 可以采用对应数据类型的泛型集合
    2.多列:1.使用Object[]数组 2.通过构造函数封装对象
    hql查询使用步骤:
    import org.hibernate.*;
    1.获取session
    Session session = new Configuration().configure().buildSessionFactory().openSession();
    2.编写Hql语句
    String hql = "from Dept";
    3.获取Query对象
    Query query = session.createQuery(hql);
    4.获取数据
    query.list();
    query.iterator();
    5.关闭session
    session.close();
    2.3关联映射
    多对一:
    主键映射:需要将一个表中的主键作为另一种表主键的外键 设置既是主键又是外键的那种表 对应主键生成策略为foreign
    唯一外键:将一张表的主键在另一张表中为外键,并且这个外键是唯一的(这一列的值都是唯一的) 添加unique=true
    一对多:
    多对多: 双方实体类中都有对方的集合 映射文件中就是<many-to-many>
    关键就是在bag/set中添加一个table属性 设置中间表(关系表)
    一对一:
    核心思想:关键就是找到一方和多方
    找到一方 在一方的实体类中添加多方的集合 映射文件中就是<one-to-many>
    找到多方 在多方的实体类中添加一方的实体属性 映射文件中就是<many-to-one>

    组件映射:
    设置:一般对一方设置为cascade 多方设置inverse=false
    懒加载:lazy=true
    立即加载:lazy=false
    使用懒加载时,只根据当前需要的数据进行查询 可能只查询一次
    使用立即加载,将所有相关的数据都一次性的查找出来, 可能查询多次
    为了不要每次都进行session的开关以及事务的开关,此时引入了openSessionInView
    openSessionInView通过Filter实现的
    fetch的设置:select/join
    join表示采用连接查询 只有当使用OID查询时才有效
    迫切连接和普通连接的区别:
    迫切左外连接: 特点是:如果左表有不满足条件的,也返回左表不满足条件
    1. LEFT JOIN FETCH 关键字表示迫切左外连接检索策略.
    2. list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee 集合都被初始化,
    存放所有关联的 Employee 的实体对象.
    3. 查询结果中可能会包含重复元素, 可以通过一个 HashSet 来过滤重复元素
    左外连接:
    1. LEFT JOIN 关键字表示左外连接查询.
    2. list() 方法返回的集合中存放的是对象数组类型
    3. 根据配置文件来决定 Employee 集合的检索策略.
    4. 如果希望 list() 方法返回的集合中仅包含 Department 对象,
    可以在HQL 查询语句中使用 SELECT 关键字
    迫切内连接: 特点是:不返回左表不满足条件
    INNER JOIN FETCH 关键字表示迫切内连接, 也可以省略 INNER 关键字
    list() 方法返回的集合中存放 Department 对象的引用, 每个 Department
    对象的 Employee 集合都被初始化, 存放所有关联的 Employee 对象

    内连接:
    INNER JOIN 关键字表示内连接, 也可以省略 INNER 关键字
    list() 方法的集合中存放的每个元素对应查询结果的一条记录, 每个元素都是对象数组类型
    如果希望 list() 方法的返回的集合仅包含 Department 对象, 可以在 HQL 查询语句中使用 SELECT 关键字

    2.4二级缓存
    Hibernate支持二级缓存,但是不提供
    使用二级缓存,需要使用第三方的组件,比如OSCache EhCache...
    1.导入第三方组件的jar包
    2.在hibernate.cfg.xml中启用二级缓存,以及制定二级缓存提供者
    <!-- 启用二级缓存 -->
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <!-- 指定二级缓存提供者 -->
    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
    <!-- <property name="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</property> -->
    <!-- 启用查询缓存 查询缓存依赖于二级缓存-->
    <property name="hibernate.cache.use_query_cache">true</property>
    3.指定要缓存的数据
    在相应的实体类对应的hbm.xml映射文件中 class标签下添加<cache usage="read-only"/>
    注意:
    二级缓存默认支持OID查询
    当使用hql查询时必须要开启查询缓存 并且在进行查询时需要设置query.setCacheable(true)
    2.5Hibernate查询方式
    OID查询 session.get()|session.load()
    HQL查询 query session.createQuery()
    原生SQL查询 sqlQuery session.createSqlQuery()
    命名查询 session.getNamedQuery()
    criteria查询 session.createCriteria()
    2.6注解
    1.持久化
    @Entity
    @Table
    @Id
    @GeneratorValue
    @SequenceGenerator | @genericGenerator
    @Column
    @Transient
    2.映射关系
    @OneToOne
    @ManyToMany
    @OneToMany
    @ManyToOne
    @JoinColumn(name="deptno")



















     

  • 相关阅读:
    Jzoj2682 最长双回文串
    Jzoj2682 最长双回文串
    【hdu3853】Loops
    【tyvj1015】【caioj1060】公路乘车
    【luogu1064】金明的预算方案
    【bzoj1260】【CQOI2007】涂色paint
    【UVa1629】Cake slicing
    【NYOJ746】整数划分(四)
    【NYOJ 15】括号匹配2
    【poj2955】Brackets
  • 原文地址:https://www.cnblogs.com/linnew/p/6512693.html
Copyright © 2011-2022 走看看