实体管理器(Entity Manager)学习笔记(JPA)

本文是关于实体管理器(Entity Manager)的学习笔记,主要介绍了其作为Java实体对象与数据库交互中介的角色,包括持久化、合并、删除、查询等操作,以及实体的生命周期和加载方式。此外,还提及了EAGER和LAZY加载策略以及级联操作。

实体管理器学习笔记 

   实习中,工作虽然不辛苦,可是每天两头跑还是需要多一点的耐心。

   上周,了解了项目框架,提到过EJB,在EJB里不得不学习JPA了。所以乘着周末,读点书,有人说要实践才能更好的学习技术。我想目前没有实践的机会,也没时间一个个去试验,先记录下自己读书笔记再说,到时候希望水到渠成。

  

    实体管理器(Entity Manager)是JAVA实体对象与数据库交互的中介!

1,负责将JAVA中对实体的操作转化成SQL脚本,以便实现实体的持久化。

2.。负责将将执行面向实体的查询的JQL转化成SQL脚本,并将结果集组装给实体返回。

 

        persist(Object o),持久化实体
        merge(T o),合并实体状态
        remove(Object entity),删除实体
        find(Class entityClass,Object primarykey),根据主键查找实体
        flush(),同步到数据库
        setFlushMode(FlushModeType flushMode),设置同步方式
        getFlushMode(),得到同步方式
        lock(Object entity,LockModeType lockMode),锁定
        refresh(Object entity),更新状态
        clear(),清除持久上下文
        contains(Object entity),判断实体是否属于当前上下文环境
        createQuery(String sqlString),创建查询
        createNamedQuery(String name),创建命名查询
        createNativeQuery(String sqlString),创建标准SQL查询
        createNativeQuery(String sqlString,Class resultClass),创建标准SQL查询,并指定查询的结果
        createNativeQuery(String sqlString,String resultsetMapping),创建标准SQL查询,并指定查询的结果如何映射
        getTransaction(),返回事务对象

 

*实体属性加载方式有两个:

1,及时加载(EAGER)

2,惰性加载(LAZY)

例子:@OneToOne(fetch=FetchType.Lazy)

如果是普通的属性

例子:@Basic(fetch=FetchType.Lazy)

实体关系注释 默认的加载方式
@OneToone EAGER
@OneToMany LAZY
@ManyToOne EAGER
@ManyToMany LAZY

 

凡是加载的是集合类的,默认为LAZY方式,否则就是EAGER方式

 

级联:

@OneToOne(CascadeType.Merge)

@OneToOne(CascadeType.Remove)

@OneToOne(CascadeType.All)

 

实体的生命周期:

1,瞬时状态

2,持久化状态

3,游离状态

4,托管状态

5,销毁状态

 

实体管理器会定时发现托管状态下的实体对象的状态发生变化,就自动执行flush()方法,将最新的实体状态保存到数据库中!

 

 

 

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值