zoukankan      html  css  js  c++  java
  • JPA的学习

    JPA
    1.实体注解 @Entity
    主键注解  @Id   主键策略@GeneratedValue(strategy=GenerationType.AUTO[IDENTITY,SEQUENCE,TABLE]) auto:根据方言数据库自己选择,默认选项 identity:MySQL支持  sequence:oracle支持
    @Column(length=32)字段长度
    @Temporal(TemporalType.DATE) 日期类型注解,只存储日期
    @Lob 字段为长文本或者二进制数据时
    @Transient 属性不和数据库字段映射
    @Basic(fetch=Fetch.LAZY) 用在字段上面,延迟加载,用不到的时候是不会加载到内存的
    2.提供的接口

    EntityManagerFactory 功能等价于hibernate里的sessionFactory
    EntityManager 等价于SessionManager

    EntityManagerFactory factory=Persistence.careateEntityManagerFactory("[配置文件里的持久化单元名称]")
    EntityManager em=factory.createEntityManager();
    em.getTranscation().begin();  //开始事物
    em.persist(new Entity());
    em.getTransaction().commit();
    em.close();
    factory.close();

    find() :根据ID号加载实体,相当于hibernate里的get()
    getReference(): 根据ID号懒加载实体类,只有访问实体类的对象时才会与数据库同步,相当于hibernate里的load
    remove():删除,里面参数为对象
    查询语句:

    Query query=em.createQuery("select o from person o where o.id=?1");
    query.setParameter(1,2);
    List<Person> personList=query.getResultList();


    更新查询:

    1 Query query=em.createQuery("delete  from person o where o.id=?1");
    2 query.setParameter(1,2);
    3 quert.executeUpdate();

    refresh():使内存中的Javabean和数据库数据再一次同步化。注:已经执行过find函数了,此时别人修改了数据库中的数据,你再次调用find函数是无法更新值得,因为jpa会默认从EntityManager中返回给你
    3、双向管理与级联操作
    1-m关系(用注解OneToMany):多的一方为关系的维护的,关系维护断负责外键记录的更新,关系被维护断是没有权利更新外键字段的

    其中可以有参数cascade,值可取CascadeType.Refresh,CascadeType.persist等

    fetch:值可取FetchType.EAGER(立即得到),FetchType.LAZY(延迟加载),默认为EAGER

    mappedby:出现这个的类为关系的被维护端,值为维护端中的一个属性。例如订单和订单项,在订单里的订单项上的oneToMan注解中出现此参数,表示订单表Order为被维护的表,订单项表的OrderItem里的Order属性来维护,则mappedby的值就是"order"

    @JoinColumn:定义外键字段的名称 例如@JoinColumn(name="order_id")

  • 相关阅读:
    记录ICallbackEventHandler 同时并发访问容易引发的问题
    IIS 属性
    Solaris10 安装
    VerifyRenderingInServerForm和EnableEventValidation引发的两个问题
    Solaris 上网配置
    动态数据类型转换
    RDLC 折线图
    codesmith复制中文乱码解决
    关于手机等品牌型号搜索与采集的中文分词分离
    说点包租公限制共享上网的破事
  • 原文地址:https://www.cnblogs.com/softzrp/p/6666707.html
Copyright © 2011-2022 走看看