hibernate

  public static void main(String[] args ) {
       Connection con = null ;
       PreparedStatement pr = null ;
        try {
           // 设置是否自动提交
           // 默认为真,一旦更新数据库,,就写入数据库
           // 如果设置为 false ,表示手动提交,必须调用 commmit () 方法才能更新数据库
           con .setAutoCommit( false );
           pr .executeQuery();
           // 提交事物
           con .commit();
       } catch (SQLException e ) {
           // TODO Auto-generated catch block
           e .printStackTrace();
           try {
              // 回滚事物
              con .rollback();
          } catch (SQLException e1 ) {
              // TODO Auto-generated catch block
              e1 .printStackTrace();
          }
       }

企业开发需要解决的问题:
需要解决 并发,交互,事物,集群,安全,分布式, web 的一系列问题。
EJB:
EJB 服务主要提供生命周期管理,代码产生,持续性管理,锁和并发行管理等服务。
 
J2EE:
J2EE 是一套设计,开发,汇编和部署企业应用程序的规范;
J2EE 提供了企业应用级程序的开发平台,提供了多层结构,分布式,基于组件,松耦合,安全可靠,独立于平台且反应迅速的应用程序环境。
 
J2EE 包含的组件技术:
JSP J2EE web 层核心技术;
servlet:J2EE web 层核心技术;
JDBC :数据库访问技术;
XML :跨平台的可扩展标记语言;
EJB J2EE 的业务层核心技术;
JNDI JAVA 的命名和目录接口;
JMS JAVA 消息事物;
JTA JTS:JAVA 事物管理;
JAVAemail :邮件收发;
RMI: 远程方法调用;
IDL :接口定义语言;将 JAVA CORBA 集成的一种技术。
 
轻量级框架:启动,测试,运行都不能离开容器单独进行,依赖性强。
 
表现层           业务层           持久层          DB
strtus1                        hibernate
strtus2                        mybatis
webwork                        jdo
springMVC                      EJB 实体 bean
 
重量级框架: SUN 提出容器提供服务,轻量级框架提供同样的服务,用来支持 POJO ,通过了代理方式实现服务的附加,用轻量级框架,持久层和业务层可以单独测试。
 

O/R Mapping O/R 映射
对象-关系映射是一门非常实用的工程技术,它实现了Java应用中的对象到关系数据库中标的自动(和透明的)持久化,实用元数据(meta data)描述对象与数据库间的映射。
O/R Mapping 的优点:
提高生产率;
可维护性;
更好性能。
 Hibernate是一种开放源代码的对象/关系映射持久层框架;
事物处理,生命周期管理不依赖于J2EE容器;
解决数据的方言问题
hibernate只需要操作对象就可以完成数据的增删改查操作,实用hibernate更面向对象;
轻量级、无侵入性,移植性很好。

SSH:
strtus:撑杆
hibernate:冬眠
spring:春天
 
hibernate 应用范围:
不适用范围:
批量对象进行操作时;
使用数据库特定映射;
表间关系复杂时,会造成性能问题

主键生成策略:
increment:自动增长,主键由hibernate控制,数据库中相应的字段没有设置自动增长,不能用于集群;
identity:自动增长,对DB2,Mysql,sql,server数据库中对应的字段设置自动增长;
sequence:对oracle数据库中相应的字段设置自动增长;
UUID:采用UUID算法生成字符串唯一 标识,UUID对生成策略来说速度较快,不需要使用数据库相关的维护表的操作,但查找相对较慢;
native:根据数据库底层描述,决定采用identity,sequence中的一个;
select:使用触发器分配主键;
foreign:使用另一个相关联的对象的标识符,通常和<one-to-one>;联合起来使用
 
oracle序列添加主键生成策略
<id name="custld">
     <generator class="sequence">
               S_CUST_ID为序列名称
               <param name = "sequence"> S_CUST_ID</param>
     </generator>
</id>

对象状态:
Transient 瞬时状态:
当生成 PO 对象时产生,数据库中没有相应的记录,没有 session 对其进行管理

Persistent 持久状态:
session 对象调用 saveorupdate() 时,数据库中有与之对应的记录,有 session 对象对其进行管理,当 PO 对象的值发生变化时, session 对象让数据库的记录与之同步;

Detached 游离状态:
session 事物提交时,数据库中有与之对应的记录,从 session 一级缓存中清除, session 对其不再进行管理;
 
hibernate get load 的区别:
1. get 为立即加载,调用 get 方法时,会马上执行 SQL 将结果查询出来;
load 为延迟加载,调用 load 方法时不会马上查询结果,而是当查询结果在使用时会发出 SQL 查询结果;
 
2. 当查询主键不存在时, get 方法返回空, load 方法会抛出对象未找到异常;
对延迟加载而言,一旦查询的对象不使用,不会真正查询数据库,这时,如果 session 关闭,再使用查询的对象,那么会抛出
  org.hibernate.LazyInitializationException : could not initialize proxy - no Session 
懒加载异常
 
一对一有两种方式:
主键关联:从表主键,同时又是主表的外键,从表没有单独的外键列;
外键关联:从表中存在外键列,关联主表的主键列,但外键列不能重复;
 
cascade="all"  级联操作,(all  none  delete save-update)当当前对象执行操作的情况下,其关联的对象也执行cascade设置的同样操作



cascade和inverse的区别:
cascade表示级联操作,当主表记录做操作时,从表记录做相应的操作,维护的是记录。
inverse表示控制反转,当该属性设置为真时,表示由关联对象维护外键关系,当前对象不做外键的维护。维护的是外键。一般来说,inverse设置在一方,外键由从表维护。


 
  org.hibernate.MappingException: Unknown entity: com.lovo.bean.GradeBean

没有添加映射抛出的异常
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值