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")



















     

  • 相关阅读:
    单例模式
    Curator Zookeeper分布式锁
    LruCache算法原理及实现
    lombok 简化java代码注解
    Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法
    解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。
    Redis 3.0 Cluster集群配置
    分布式锁的三种实现方式
    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
    How to Use Convolutional Neural Networks for Time Series Classification
  • 原文地址:https://www.cnblogs.com/linnew/p/6512693.html
Copyright © 2011-2022 走看看